我一直在试图找到一个解决方案,通过网络搜索,并通过许多博客,论坛和网站,我仍然坚持这个问题。XML递归节点解析器
我有这样的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);
OK,这个工程......更多或更少。 现在,我得到的回应是:
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::
...
抱歉,这是我的错误。 –