Если существует XML-файл с именем a.xml , есть ли способ пройти через его дерево DOM по порядку?
Я пытался использовать метод GetNextSiblings но это не сработало.Любая идея?
Вот XML:
<?xml version="1.0" encoding="UTF-8"?>
<title text="title1">
<comment id="comment1">
<data> abcd </data>
<data> efgh </data>
</comment>
<comment id="comment2">
<data> ijkl </data>
<data> mnop </data>
<data> qrst </data>
</comment>
</title>
А вот мой код для его обхода:
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.*;
import org.w3c.dom.traversal.DocumentTraversal;
import org.w3c.dom.traversal.NodeFilter;
import org.w3c.dom.traversal.NodeIterator;
import org.xml.sax.SAXException;
public class Newtraverse {
public static Node check(Node node){
Node c=node;
// Node c = null;
if (node!=null)
if (node.hasChildNodes()==true &&node.getNodeName()!=null)
{
node=node.getFirstChild().getNextSibling();
if (node!=null)
{
System.out.println(node);
check(node);
}
if(node==null)
{
c=c.getNextSibling();
check(c);
}
}
return node;
}
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
File file = new File("d:\\a.xml");
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(file);
document.getDocumentElement().normalize();
Node b=document.getFirstChild();
Node result= check(b);
}
}
А вот вывод:
[comment: null]
[data: null]
Как вы все видите, он просто пересекает два тега.Как я могу это исправить?