Java XML节点列表不为空,但其节点为空

Java XML节点列表不为空,但其节点为空,java,xml,nodelist,Java,Xml,Nodelist,我有一个XML文件: 我想做的是使用以下代码从“planView”访问孩子们: File file = new File(fileName); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document doc

我有一个XML文件:

我想做的是使用以下代码从“planView”访问孩子们:

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

为什么planview中的节点为空?

org.w3c.dom.*
类没有任何帮助。你不能仅仅把+放到一个字符串上,然后希望得到一些有用的东西

它只会给你任何有意义的信息,如果你调用正确的方法,在正确的顺序,在痛苦的细节


也许可以尝试使用第三方库,比如JDOM2。它增加了项目的依赖项,但使用起来更舒适。

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


planView在此xml中没有任何内容,但它有两个子项,因此如果要访问几何体节点,则需要在getElementsByTagName()中传递“几何体”
idx is 0 and node is [planView: null] and elem is [planView: null]
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