Я пытался найти решение, искать в Интернете и через многие блоги, форумы и веб-сайты, и я все еще придерживаюсь этой проблемы.XML-рекурсивный узел Parser
У меня есть источник 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.*;
Спасибо за вашу помощь.
EDIT 1: FYI. Файлы XML идут глубже, чем 2 уровня.
EDIT 2: Если изменить parent.getNodeName() к root.getNodeName(), я получаю следующий ответ:
#text::
#text::
#text::
...
жаль, что это моя ошибка. –