XML NodeList 不为空但其节点为空

XML NodeList is not empty but its node is null

所以我有这个 XML 文件:

我想做的是使用以下代码从 "planView" 访问 children:

File file = new File(fileName);
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(fileName);
NodeList myList = document.getElementsByTagName("planView");     

for (int i = 0; i < myList.getLength(); i++) {
    Node nNode = myList.item(i);
    Element eElement = (Element) nNode;
    System.out.println("idx is " + i +" and node is "  + nNode + " and elem is " + eElement);
}

这是输出(来自 System.out.println):

idx is 0 and node is [planView: null] and elem is [planView: null]

为什么平面图中的节点为空?

org.w3c.dom.* 类 非常无益。您不能只是将它们 + 变成一个字符串并希望获得有用的东西。

如果您以正确的顺序调用正确的方法,它只会给您提供任何有意义的信息。

也许可以尝试使用第三方库,例如 JDOM 2。它会增加您项目的依赖性,但使用起来会更舒适。

planView的子节点需要通过方法getChildNodes()访问:

NodeList planViews = document.getElementsByTagName("planView");

for (int i = 0; i < planViews.getLength(); i++) {
  Node planView = planViews.item(i);
  for (int j = 0; j < planView.getChildNodes().getLength(); j++) {
    Node n = planView.getChildNodes().item(j);
    if (n instanceof Element) {
      Element e = (Element) n;
      System.out.println("s: " + e.getAttribute("s"));
    }
  }
}

它打印出如下内容:

s: 0.000e+00
s: 1.000e+01