Java XML递归节点解析器

Java XML递归节点解析器,java,xml,parsing,recursion,Java,Xml,Parsing,Recursion,我一直在试图找到一个解决方案,在网络上搜索,在许多博客、论坛和网站上搜索,我仍然被这个问题困扰着 我有这样一个XML源: <?xml version="1.0" encoding="UTF-8" ?> <root> <level_one> <level_two> #text </level_two> <level_two> #text

我一直在试图找到一个解决方案,在网络上搜索,在许多博客、论坛和网站上搜索,我仍然被这个问题困扰着

我有这样一个XML源:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
   <level_one>
      <level_two>
         #text
      </level_two>
      <level_two>
         #text
      </level_two>
   </level_one>
</root>
<?xml version="1.0" encoding="UTF-8" ?>
<root>[A node that contains "\n    "]
   <level_one>[A node that contains "\n    "]
      <level_two>
         #text
      </level_two>
      <level_two>
         #text
      </level_two>[A node that contains "\n    "]
   </level_one>[A node that contains "\n    "]
</root>
一旦加载了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:如果我将父.getNodeName()更改为根.getNodeName(),我将得到以下响应:

#text::
#text::
#text::
...

这是因为您的程序正在显示包含空格的空文本节点,如:“\n”

您的xml可能如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
   <level_one>
      <level_two>
         #text
      </level_two>
      <level_two>
         #text
      </level_two>
   </level_one>
</root>
<?xml version="1.0" encoding="UTF-8" ?>
<root>[A node that contains "\n    "]
   <level_one>[A node that contains "\n    "]
      <level_two>
         #text
      </level_two>
      <level_two>
         #text
      </level_two>[A node that contains "\n    "]
   </level_one>[A node that contains "\n    "]
</root>

对不起,这是我的错。是的,有问题。一旦我清除了XML文件中的“\n”或“\t”特殊字符,代码就可以工作了!谢谢你的帮助。
#document
root
level_one
level_two
level_two::#text
level_two
level_two::#text