我一直在尝试寻找解决方案,通过网络以及许多博客、论坛和网站进行搜索,但我仍然被这个问题所困扰。
我有一个这样的 XML 源:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<level_one>
<level_two>
#text
</level_two>
<level_two>
#text
</level_two>
</level_one>
</root>
然后,在 Java 中,我尝试以递归方式解析这个 XML 文件。这是我的功能:
public void parseXML(Node root, Node parent)
{
if (root.hasChildNodes())
{
NodeList childrens = root.getChildNodes();
for (int i = 0; childrens.getLength(); i++)
{
parseXML(childrens.item(i), root);
}//for
}//fi:root_childrens
else
System.println.out(parent.getNodeName()+"::"+root.getNodeValue());
}
有一次,当我加载 XML 文件时,我会:
xmlDoc.normalize();
parseXML(xmlDoc.getFirstChild(), null);
好的,这工作......或多或少。现在,我得到的响应如下:
root:: //OK
level_one:: //OK
level_two::#text //OK
level_one:: //WRONG: should not appear any more
level_two::#text //OK
level_one:: //WRONG: should not appear any more
root:: //WRONG: should not appear any more
我正在使用以下库:
import javax.xml.*;
import org.w3c.dom.*;
谢谢你的帮助。
编辑1:仅供参考。XML 文件的深度超过 2 个级别。
编辑 2:如果我将parent.getNodeName()更改为root.getNodeName(),我会得到以下响应:
#text::
#text::
#text::
...