我使用此方法从 xml 文件读取所有节点。但看来我的递归不起作用,因为所有节点都是#text 节点。我怎样才能跳过它并让它返回我的实际节点?
private void iterateNodes(Node node) {
System.out.println("Node: " + node.getNodeName());
NodeList nodeList = node.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node currentode = nodeList.item(0);
System.out.println(currentode.getNodeName());
if (currentode.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) currentode;
iterateNodes(element);
}
}
}
public void run() throws ParserConfigurationException, SAXException, IOException {
String path = "others.xml";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
org.w3c.dom.Document document = builder.parse(path);
document.getDocumentElement().normalize();
iterateNodes(document.getDocumentElement());
}
最佳答案
您在Node currentode = nodeList.item(0)
中进行编码 <---- 使用迭代器变量 i 更改它。
private void iterateNodes(Node node) {
System.out.println("Node: " + node.getNodeName());
NodeList nodeList = node.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node currentode = nodeList.item(i);
System.out.println(currentode.getNodeName());
if (currentode.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) currentode;
iterateNodes(element);
}
}
}
关于Java 从 xml 递归读取节点仅返回 #text 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35148704/