Erick_voodoo
|
 |
« : 08 Март 2013, 15:40:58 » |
|
Доброго времени суток. Возник такой вопрос,мне нужно написать на Java программу, которая будет читать из локально расположенного xml-файла координаты точек в двухмерном пространстве и выводить графически в окне эти точки, соединенные в подобие графика, как мне добиться вообще чтения явой из xml файла координат? (что нужно вообще для этого) Помогите умы Гродненские,я то в этом еще и какой новичек.
|
|
|
Записан
|
|
|
|
Clinique Happy
|
Доброго времени суток. Возник такой вопрос,мне нужно написать на Java программу, которая будет читать из локально расположенного xml-файла координаты точек в двухмерном пространстве и выводить графически в окне эти точки, соединенные в подобие графика, как мне добиться вообще чтения явой из xml файла координат? (что нужно вообще для этого) Помогите умы Гродненские,я то в этом еще и какой новичек. Google it! Простейшее чтение X,Y из XML и потом использование любой библиотеки для построения графиков. Примеры не подскажу ибо специализация чутка другая. (для веб как пример - jQuery Plot, для .NET - Telerik Reporting)
|
|
|
Записан
|
|
|
|
Erick_voodoo
|
Я уже разобрался,то есть сделал так что бы у меня читало с 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
|
Пример xml в студию
|
|
|
Записан
|
HTTP Error 404 - File or directory not found.
|
|
|
Erick_voodoo
|
Данные оно читает с 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
|
Данные оно читает с xml в массив не хочет забивать,из циклов if(bX)и if(bY) оно данные не хочет тянуть,как ихв программе в массив вбить ты сам то хоть понял что написал? покажи где ты вообще с массивом работаешь Добавлено: 09 Март 2013, 15:12:47
вообще задача элементарная, твоя проблема в том, что ты не знаешь простейших вещей, например что такое цикл и как работать с массивами в яве. Ты хоть понимаешь что делает метод который ты выложил? Если хочешь сам разобраться то начни с основ еще раз.
|
|
|
Записан
|
|
|
|
coolasm
|
Такой формат не особо подходит для 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
|
Вообще то я понимаю,массива там нету потому что это первоначальный вариант,я в яве в массив пробовал забивать. С массивами я умею работать. После того как нашли в хмль нужные "циферки" ,я из текста(эти цифры они в текстовом варианте сначала),перевожу в число(эти циферки соответственно),проблема в том что массив или число которому я присваиваю значения из хмль не работают за if. Добавлено: 09 Март 2013, 16:36:00
coolasm Мне просто препод сказал так что бы выглядел xml файл,в общем, если это что то даст, то уже нужно просто найти периметр фигуры по этим точка, но без данных в массиве я этого сделать не могу. Помогите кто чем может.
|
|
« Последнее редактирование: 09 Март 2013, 16:36:00 от Erick_voodoo »
|
Записан
|
|
|
|
Йаааz'
|
на программиста учишься?
|
|
|
Записан
|
|
|
|
Au
Молодой Гродненец
Репутация: +6/-0
Offline
Пол: 
Сообщений: 40
Я люблю Гродненский форум!
|
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
|
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 »
|
Записан
|
|
|
|
|