Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
19 Июль 2025, 00:18:02
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

Обработка XML в Java

Страниц  :   Вниз
  Печать  
Автор Тема: Обработка XML в Java  (Прочитано 1684 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Erick_voodoo
Гродненец
**

Репутация: +8/-0
Offline Offline

Сообщений: 275


Просмотр профиля Email
« : 08 Март 2013, 15:40:58 »

Доброго времени суток. Возник такой вопрос,мне нужно написать на Java
программу, которая будет читать из локально расположенного xml-файла
координаты точек в двухмерном пространстве и выводить графически в
окне эти точки, соединенные в подобие графика, как мне добиться вообще чтения явой из xml файла координат?
(что нужно вообще для этого)
Помогите умы Гродненские,я то в этом еще и какой новичек.

Записан
Clinique Happy
Почетный гродненец
*****

Репутация: +130/-6
Offline Offline

Пол: Мужской
Сообщений: 1198


Меняю себя и мир вокруг себя!

Просмотр профиля WWW
« Ответ #1 : 08 Март 2013, 16:32:42 »

Доброго времени суток. Возник такой вопрос,мне нужно написать на Java
программу, которая будет читать из локально расположенного xml-файла
координаты точек в двухмерном пространстве и выводить графически в
окне эти точки, соединенные в подобие графика, как мне добиться вообще чтения явой из xml файла координат?
(что нужно вообще для этого)
Помогите умы Гродненские,я то в этом еще и какой новичек.
Google it! Простейшее чтение X,Y из XML и потом использование любой библиотеки для построения графиков. Примеры не подскажу ибо специализация чутка другая. (для веб как пример - jQuery Plot, для .NET - Telerik Reporting)
Записан

Erick_voodoo
Гродненец
**

Репутация: +8/-0
Offline Offline

Сообщений: 275


Просмотр профиля Email
« Ответ #2 : 08 Март 2013, 17:32:15 »

Я уже разобрался,то есть сделал так что бы у меня читало с xml файла в java,мне нужно теперь эти данные в массив забить:
Тут печатается текст найденный между тегами в хмл:
 public void characters(char ch[], int start, int length) throws SAXException{
                    if(bX){
                        System.out.println("X: " + new String(ch, start, length));
                        bX = false;   
                    }
                    if(bY){
                        System.out.println("Y: " + new String(ch, start, length));
                        bY = false;
                    }
                }
Как в массив загнать?
P.S. Внутри if не удалось загнать в массив,пишет ошибку.
Записан
coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #3 : 08 Март 2013, 20:18:02 »

Пример xml в студию
Записан

HTTP Error 404 - File or directory not found.
Erick_voodoo
Гродненец
**

Репутация: +8/-0
Offline Offline

Сообщений: 275


Просмотр профиля Email
« Ответ #4 : 09 Март 2013, 10:44:29 »

Данные оно читает с xml в массив не хочет забивать,из циклов if(bX)и if(bY) оно данные не хочет тянуть,как ихв программе в массив вбить то.Ъ

Вот такое содержание xml:

<points>
  <point>
    <x>1</x>
    <y>1</y>
  </point>
  <point>
    <x>1</x>
    <y>4</y>
  </point>
  <point>
    <x>5</x>
    <y>4</y>
  </point>
  <point>
    <x>5</x>
    <y>1</y>
  </point>
</points>

То есть у меня по точкам есть прямоугольник.
Записан
NetworkAdmin
Настоящий гродненец
****

Репутация: +42/-4
Offline Offline

Сообщений: 802

Просмотр профиля Email
« Ответ #5 : 09 Март 2013, 15:05:16 »

Данные оно читает с xml в массив не хочет забивать,из циклов if(bX)и if(bY) оно данные не хочет тянуть,как ихв программе в массив вбить
ты сам то хоть понял что написал?

покажи где ты вообще с массивом работаешь

Добавлено: 09 Март 2013, 15:12:47
вообще задача элементарная, твоя проблема в том, что ты не знаешь простейших вещей, например что такое цикл и как работать с массивами в яве.  Ты хоть понимаешь что делает метод который ты выложил?

Если хочешь сам разобраться то начни с основ еще раз.
Записан
coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #6 : 09 Март 2013, 15:29:05 »

Такой формат не особо подходит для SAX-парсера, используй для разбора либо DOM-парсер, либо измените формат xml.
 
<shape>
     <p x=1 y=1 />
     <p x=1 y=4 />
     <p x=5 y=4 />
     <p x=5 y=1 />
</shape>
Записан

HTTP Error 404 - File or directory not found.
Erick_voodoo
Гродненец
**

Репутация: +8/-0
Offline Offline

Сообщений: 275


Просмотр профиля Email
« Ответ #7 : 09 Март 2013, 15:32:02 »

Вообще то я понимаю,массива там нету потому что это первоначальный вариант,я в яве в массив пробовал забивать. С массивами я умею работать.

После того как нашли в хмль нужные "циферки" ,я из текста(эти цифры они в текстовом варианте сначала),перевожу в число(эти циферки соответственно),проблема в том что массив или число которому я присваиваю значения из хмль не работают за if.



Добавлено: 09 Март 2013, 16:36:00
coolasm
Мне просто препод сказал так что бы выглядел xml файл,в общем, если это что то даст, то уже нужно просто найти периметр фигуры по этим точка, но без данных в массиве я этого сделать не могу. Помогите кто чем может.
« Последнее редактирование: 09 Март 2013, 16:36:00 от Erick_voodoo » Записан
Йаааz'
Настоящий гродненец
****

Репутация: +122/-4
Offline Offline

Пол: Мужской
Сообщений: 665


Рыб мечты

Просмотр профиля
« Ответ #8 : 09 Март 2013, 21:26:13 »

на программиста учишься?
Записан
Au
Молодой Гродненец
*

Репутация: +6/-0
Offline Offline

Пол: Мужской
Сообщений: 40


Я люблю Гродненский форум!

Просмотр профиля
« Ответ #9 : 09 Март 2013, 21:33:10 »

Код:
import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

import com.sun.org.apache.xpath.internal.XPathAPI;

public class ParseXML {

public static void main(String[] args) throws Exception {
String path = "D:/points.xml";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse(new File(path));
NodeList xlist = XPathAPI.selectNodeList(document.getDocumentElement(),
"point/x/text()");
NodeList ylist = XPathAPI.selectNodeList(document.getDocumentElement(),
"point/y/text()");

int[][] points = new int[xlist.getLength()][2];
for (int i = 0; i < xlist.getLength(); i++) {
points[i][0] = Integer.valueOf(xlist.item(i).getNodeValue());
points[i][1] = Integer.valueOf(ylist.item(i).getNodeValue());
}
for (int i = 0; i < points.length; i++) {
System.out.println(String.format("point %d x=%d, y=%d", i,
points[i][0], points[i][1]));
}
}
}
//Output
//point 0 x=1, y=1
//point 1 x=1, y=4
//point 2 x=5, y=4
//point 3 x=5, y=1
Данные в массиве points. Дальше - сам.
Записан
Erick_voodoo
Гродненец
**

Репутация: +8/-0
Offline Offline

Сообщений: 275


Просмотр профиля Email
« Ответ #10 : 10 Март 2013, 11:33:37 »

Au
БлагодаренУлыбка

И последний вопрос,как и куда устанавливать библиотеку JFreeChart? А то разобраться не могу

Добавлено: 10 Март 2013, 15:19:15
Код:
import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

import com.sun.org.apache.xpath.internal.XPathAPI;

public class sin {

public static void main(String[] args) throws Exception {
String path = "xml_file1.xml";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse(new File(path));
NodeList xlist = XPathAPI.selectNodeList(document.getDocumentElement(),
"point/x/text()");
NodeList ylist = XPathAPI.selectNodeList(document.getDocumentElement(),
"point/y/text()");

int[][] points = new int[xlist.getLength()][2];
int s=0,ss=0;
double d=0,dd=0,ds=0;
for (int i = 0; i < xlist.getLength(); i++) {
points[i][0] = Integer.valueOf(xlist.item(i).getNodeValue());
points[i][1] = Integer.valueOf(ylist.item(i).getNodeValue());
}
for (int i = 0; i < points.length; i++) {
System.out.println(String.format("point %d x=%d, y=%d", i,
points[i][0], points[i][1]));
}
for(int kk=0;kk<points.length-1;++kk){
if(points[kk][0]!=0){if(points[kk][1]!=0){
double x=points[kk][0];
double xx=points[kk+1][0];
double y=points[kk][1];
double yy=points[kk+1][1];
    d=Math.sqrt((xx-x)*(xx-x)+(yy-y)*(yy-y));
dd=dd+d;
System.out.println("kk="+kk+" Dlina:="+(Math.round(d*100)/100.0)+" Summa:"+Math.round(dd*100)/100.0);}}
}
ds=Math.sqrt((points[points.length-1][0]-points[0][0])*(points[points.length-1][0]-points[0][0])+(points[points.length-1][1]-points[0][1])*(points[points.length-1][1]-points[0][1]));
dd=dd+ds;
System.out.println("kk="+(points.length-1)+" Dlina:="+(Math.round(ds*100)/100.0)+" Summa:"+Math.round(dd*100)/100.0);
System.out.println("Perimetr raven:"+Math.round(dd*100)/100.0);
}
}

Вот готовый работающий вариант,если кому то будет нужен. Всем спасибо за помощь!)Выручили:)
« Последнее редактирование: 10 Март 2013, 15:19:15 от Erick_voodoo » Записан
Страниц  :   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2025, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,12 секунд. Запросов: 19.