所以我有这个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);
}
这是输出(来自System.out.println):
idx is 0 and node is [planView: null] and elem is [planView: null]
为什么平面图中的节点为空?
答案 0 :(得分:0)
org.w3c.dom.*
类非常无用。您不能只是将它们加为字符串并希望获得有用的东西。
仅当您以正确的顺序,以正确的方式调用正确的方法并提供详尽的细节时,它才会为您提供任何有意义的信息。
也许尝试使用第三方库,例如JDOM2。它增加了项目的依赖关系,但使用起来更加舒适。
答案 1 :(得分:0)
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