我正在尝试从XML文件中获取数据并在处理中使用此数据 . 这样做的时候我得到了NPE,我无法弄清楚我错在哪里 . XML有几层,我必须从这个“孩子”获取数据:
http://i62.tinypic.com/2mb90g.png
我的代码看起来像这样:
XML xml;
void setup(){
xml = loadXML("parker.xml");
XML[] children = xml.getChildren("kml");
XML[] Folder=children[0].getChildren("Folder");
XML[] Placemark=Folder[1].getChildren("Placemark");
XML[] Polygon=Placemark[2].getChildren("Polygon");
XML[] outerBoundaryIs=Polygon[3].getChildren("outerBoundaryIs");
XML[] LinearRing=outerBoundaryIs[4].getChildren("LinearRing");
for (int i = 0; i < LinearRing.length; i++) {
float coordinates = children[i].getFloat("coordinates");
println(coordinates);
}
}
最佳克里斯
堆栈跟踪:
[致命错误]:1:1:prolog中不允许内容 . org.xml.sax.SAXParseException; lineNumber:1; columnNumber:1;序言中不能有内容 . at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347)在processing.cata.XML . (XML.java:187)的processing.core.PApplet.loadXML(PApplet.java:6310)处于processing.core.PApplet.loadXML(PApplet.java:6300)的XMLtryout.setup(XMLtryout) .java:21)在processing.core.PApp.handleDraw(PApplet.java:2359)的processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:240)处理process.core.PApplet.run(PApplet.java:2254)在java.lang.Thread.run(Thread.java:744)
XML文件:
3 回答
可能导致此错误,因为在xml文件的顶部缺少此错误
或者文件开头有一些不可打印的垃圾 .
'prolog中不允许内容'错误表示您在XML声明和文档元素的外观之间有一些内容,例如
你链接的XML文件是可以的,所以看起来你好
在将XML二进制文件传递给XML解析器之前错误地读取它,
或(更有可能) you're not reading the XML at all (当您从Web URL读取并收到错误响应时可能会发生这种情况) . I assume you get a HTTP 40x error which you don't recognize, and read the response (usually HTML) as XML, which causes the error. 请记住,applet通常只能从同一服务器读取资源(这可能会导致错误) .
要验证这一点,请尝试读取URL内容并将其作为文本输出,并检查它是否正常 .
让它更容易
试试这样
应该显示:
PS:kml是根元素