繁体   English   中英

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

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

我正在尝试从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:序言中不允许内容。 org.xml.sax.SAXParseException; lineNumber:1; columnNumber:1; 序言中不能有内容。 在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档案:

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

可能是由于xml文件顶部缺少此错误而引起的

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

或文件开头有一些不可打印的垃圾。

在序言中不允许内容 ”错误表示您在XML声明和文档元素的外观之间有一些内容,例如

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

不过,您链接的XML文件还可以,因此您似乎

  • 在将XML二进制文件传递给XML解析器之前,会错误地读取它,
  • 或(很可能) 您根本不阅读XML (当您从Web URL读取并得到错误响应时可能会发生)。 我假设您收到一个无法识别的HTTP 40x错误,并以XML格式读取响应(通常为HTML),从而导致该错误。 请记住,小程序通常只能从同一服务器读取资源(这可能会导致错误)。

要验证这一点,请尝试读取URL内容并将其输出为文本,然后检查其是否正常。

使它更容易

这样尝试

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

应该显示:

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是根元素

暂无
暂无

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

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