简体   繁体   English

将XML文件导入到Processing,Java时发生NullPointerException

[英]NullPointerException when importing XML-file into Processing, Java

I'm trying to get data from an XML-file and use this data in processing. 我正在尝试从XML文件获取数据并在处理中使用此数据。 When doing so I get a NPE, and I can't quite figure out where I'm wrong. 这样做时,我得到了NPE,但我无法弄清楚哪里错了。 The XML got several layers and I have to get data from this "child": XML有几层,我必须从这个“子”中获取数据:

http://i62.tinypic.com/2mb90g.png http://i62.tinypic.com/2mb90g.png

My code looks like this: 我的代码如下所示:

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);

  }
}

Best Chris 最佳克里斯

Stack trace: 堆栈跟踪:

[Fatal Error] :1:1: Content is not allowed in prolog. [致命错误]:1:1:序言中不允许内容。 org.xml.sax.SAXParseException; org.xml.sax.SAXParseException; lineNumber: 1; lineNumber:1; columnNumber: 1; columnNumber:1; Content is not allowed in prolog. 序言中不能有内容。 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) at processing.data.XML.(XML.java:187) at processing.core.PApplet.loadXML(PApplet.java:6310) at processing.core.PApplet.loadXML(PApplet.java:6300) at XMLtryout.setup(XMLtryout.java:21) at processing.core.PApplet.handleDraw(PApplet.java:2359) at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:240) at processing.core.PApplet.run(PApplet.java:2254) at java.lang.Thread.run(Thread.java:744) 在com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)在com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347)在XMLtryout.setup(XMLtryout)的processing.core.PApplet.loadXML(PApplet.java:6310)处的processing.data.XML。(XML.java:6310)在XMLtryout.setup(XMLtryout)处的processing.core.PApplet.loadXML(PApplet.java:6300) .java:21)在processing.core.PApplet.handleDraw(PApplet.java:2359)在processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:240)在processing.core.PApplet.run(PApplet.java:2254)在java.lang.Thread.run(Thread.java:744)

XML file: XML档案:

https://www.dropbox.com/s/xn3thjskhlf2wai/parker.xml https://www.dropbox.com/s/xn3thjskhlf2wai/parker.xml

This error maybe caused because missing this at the top of your xml file 可能是由于xml文件顶部缺少此错误而引起的

<?xml version="1.0" encoding="utf-8"?>

or there's some non-printable garbage at the start of your file. 或文件开头有一些不可打印的垃圾。

The ' Content is not allowed in prolog ' error indicates that you have some content between the XML declaration and the appearance of the document element, for example 在序言中不允许内容 ”错误表示您在XML声明和文档元素的外观之间有一些内容,例如

<?xml version="1.0" encoding="utf-8"?>
content here is not allowed
<kml xmlns="http://earth.google.com/kml/2.1">
...
</kml>

The XML file you linked is ok though, so it seems you're 不过,您链接的XML文件还可以,因此您似乎

  • reading the XML binary incorrectly before passing it to the XML parser, 在将XML二进制文件传递给XML解析器之前,会错误地读取它,
  • or (more likely) you're not reading the XML at all (can happen when you read from a web URL and getting an error response). 或(很可能) 您根本不阅读XML (当您从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. 我假设您收到一个无法识别的HTTP 40x错误,并以XML格式读取响应(通常为HTML),从而导致该错误。 Remember that applets usually can only read resources from the same server (that's what might cause the error). 请记住,小程序通常只能从同一服务器读取资源(这可能会导致错误)。

To verify this, attempt to read the URL content and output it as text, and check if it looks ok. 要验证这一点,请尝试读取URL内容并将其输出为文本,然后检查其是否正常。

Make it more easy 使它更容易

try like this 这样尝试

public static void setUp(){
    try {
  File file = new File("parker.xml");
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  Document doc = db.parse(file);
  doc.getDocumentElement().normalize();
  System.out.println("Root element " + doc.getDocumentElement().getNodeName());
  NodeList nodeLst = doc.getElementsByTagName("LinearRing");
  System.out.println("Information");

  for (int s = 0; s < nodeLst.getLength(); s++) {

    Node fstNode = nodeLst.item(s);

    if (fstNode.getNodeType() == Node.ELEMENT_NODE) {

           Element fstElmnt = (Element) fstNode;
      NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("coordinates");
      Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
      NodeList fstNm = fstNmElmnt.getChildNodes();
      System.out.println("coordinates : "  + ((Node) fstNm.item(0)).getNodeValue());

      //

      //
    }

  }
  } catch (Exception e) {
    e.printStackTrace();
  }
}

that should display : 应该显示:

Root element kml
Information
coordinates : 
              10.088512,56.154109,0
              10.088512,56.154109,0
              10.088512,56.154109,0
              10.088511,56.15411,0
              10.088511,56.15411,0
              10.08851,56.15411,0
              10.08851,56.154111,0
              10.088509,56.154111,0
              10.088508,56.154111,0
              10.088508,56.154111,0
              10.088507,56.154111,0
              10.088506,56.154111,0
              10.088506,56.154111,0
              10.088505,56.154111,0
              10.088504,56.154111,0
              10.088504,56.154111,0
              10.088503,56.15411,0
              10.088503,56.15411,0
              10.088502,56.15411,0
              10.088502,56.154109,0
              10.088502,56.154109,0
              10.088501,56.154109,0
              10.088501,56.154108,0
              10.088501,56.154108,0
              10.088501,56.154108,0
              10.088501,56.154107,0
              10.088285,56.154094,0
              10.088104,56.154372,0
              10.088061,56.154401,0
              10.087988,56.15445,0
              10.087915,56.154611,0
              10.08791,56.154613,0
              10.087912,56.154613,0
              10.087877,56.1548,0
              10.08772,56.15482,0
              10.087558,56.154911,0
              10.087421,56.155111,0
              10.087316,56.155308,0
              10.087328,56.15538,0
              10.087372,56.155413,0
              10.087446,56.155453,0
              10.087484,56.155487,0
              10.08747,56.155601,0
              10.08772,56.155616,0
              10.087719,56.155618,0
              10.088618,56.155671,0
              10.089096,56.1557,0
              10.089096,56.155699,0
              10.089138,56.155701,0
              10.089127,56.155706,0
              10.089004,56.155787,0
              10.08888,56.155853,0
              10.088799,56.155806,0
              10.088571,56.155914,0
              10.088455,56.155946,0
              10.088112,56.156081,0
              10.088184,56.156138,0
              10.087733,56.156353,0
              10.087489,56.156421,0
              10.087288,56.156341,0
              10.087268,56.156333,0
              10.086893,56.156182,0
              10.08684,56.156271,0
              10.087049,56.156373,0
              10.086893,56.156455,0
              10.086664,56.156575,0
              10.086443,56.156698,0
              10.086425,56.156708,0
              10.085983,56.156955,0
              10.085655,56.157139,0
              10.085462,56.157276,0
              10.085272,56.157233,0
              10.085176,56.157328,0
              10.084917,56.157393,0
              10.084883,56.157458,0
              10.08495,56.157513,0
              10.084947,56.157524,0
              10.084943,56.157539,0
              10.084855,56.15787,0
              10.084855,56.15787,0
              10.084321,56.157317,0
              10.085553,56.156195,0
              10.085555,56.156194,0
              10.085553,56.156194,0
              10.085734,56.156035,0
              10.085821,56.155977,0
              10.085937,56.155932,0
              10.085993,56.155942,0
              10.086031,56.155959,0
              10.086171,56.15592,0
              10.086227,56.155901,0
              10.086392,56.155841,0
              10.086513,56.155786,0
              10.08664,56.155699,0
              10.086686,56.155657,0
              10.086727,56.155605,0
              10.086777,56.155486,0
              10.086861,56.155289,0
              10.086916,56.155134,0
              10.087006,56.154899,0
              10.087075,56.154706,0
              10.087094,56.154649,0
              10.0871,56.154574,0
              10.087112,56.154464,0
              10.087111,56.154362,0
              10.087112,56.154279,0
              10.087112,56.154279,0
              10.087113,56.15427,0
              10.087114,56.154198,0
              10.087108,56.15413,0
              10.087091,56.154054,0
              10.086992,56.153698,0
              10.087,56.153678,0
              10.087031,56.153647,0
              10.087036,56.153648,0
              10.087046,56.153652,0
              10.087035,56.153647,0
              10.087039,56.153645,0
              10.087072,56.153612,0
              10.087367,56.153308,0
              10.087371,56.153303,0
              10.08742,56.15323,0
              10.087568,56.152963,0
              10.087568,56.152962,0
              10.087569,56.152962,0
              10.08757,56.152961,0
              10.087571,56.15296,0
              10.087573,56.152959,0
              10.087574,56.152959,0
              10.087575,56.152958,0
              10.087577,56.152958,0
              10.087579,56.152958,0
              10.087581,56.152957,0
              10.087582,56.152957,0
              10.087584,56.152957,0
              10.087586,56.152958,0
              10.087588,56.152958,0
              10.087589,56.152958,0
              10.087591,56.152959,0
              10.087592,56.152959,0
              10.087593,56.15296,0
              10.087594,56.152961,0
              10.087595,56.152962,0
              10.087596,56.152963,0
              10.087596,56.152964,0
              10.087596,56.152965,0
              10.087596,56.152965,0
              10.087614,56.152967,0
              10.087921,56.152988,0
              10.088134,56.153019,0
              10.088311,56.15304,0
              10.088454,56.153052,0
              10.088469,56.153378,0
              10.08847,56.153445,0
              10.088473,56.153597,0
              10.088473,56.153597,0
              10.088473,56.153597,0
              10.088703,56.153614,0
              10.088703,56.153614,0
              10.088703,56.153614,0
              10.088704,56.153614,0
              10.088705,56.153614,0
              10.088705,56.153615,0
              10.088706,56.153615,0
              10.088706,56.153615,0
              10.088707,56.153616,0
              10.088707,56.153616,0
              10.088707,56.153616,0
              10.088707,56.153617,0
              10.088707,56.153617,0
              10.088707,56.153617,0
              10.088707,56.153618,0
              10.088512,56.154108,0
              10.088512,56.154109,0

coordinates : 
              10.086779,56.155487,0
              10.086778,56.155488,0
              10.086779,56.155487,0
              10.086779,56.155487,0

coordinates : 
              10.08847,56.153602,0
              10.088469,56.153602,0
              10.088469,56.153602,0
              10.08847,56.153602,0

PS : kml is the root element PS:kml是根元素

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM