Node root = doc.getFirstChild();
NodeList nodes = root.getChildNodes();
for(int i=0;i<nodes.getLength();i++){
NodeList ns = nodes.item(i).getChildNodes();
for(int j=0;j<ns.getLength();j++){
String s=ns.item(j).getTextContent();
System.out.print(s+" ");
}
System.out.println();
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<students>
<student>
<name>lisi</name>
<id>1001</id>
<age>man</age>
</student>
<student>
<name>zhangsan</name>
<id>1002</id>
<age>man</age>
</student>
<student>
<name>wangwu</name>
<id>1003</id>
<age>man</age>
</student>
<student>
<student>
<name>haha</name>
<student>
<name>hehe</name>
<id>1002</id>
<age>woman</age>
</student>
</student>
</student>
</students>老师上课写了这么一个代码,是获取XLM中各个子节点中的数据的,但是我想不通的是老师只写了2个getChildNodes(),那如果有3层关系的子节点,这个程序是怎么实现获取数据的?(可能我表达的不是那么清楚,我看有的书上写着用递归的方法,那样感觉比较好理解)
还是一样的用Node的getChildNodes()来获取子节点列表
得到<students>
NodeList nodes = root.getChildNodes();
得到所有的<student>节点
NodeList ns = nodes.item(i).getChildNodes();
得到<name> <id> <age>节点
通过判断NodeList==null || NodeList.size() ==0 来判断是否有子节点
NodeList nodes = root.getChildNodes();
for(int i=0;i<nodes.getLength();i++){
NodeList ns = nodes.item(i).getChildNodes();
for(int j=0;j<ns.getLength();j++){
String s=ns.item(j).getTextContent();
System.out.print(s+" ");
}
System.out.println();
}我感觉老师这样写有点多此一举啊?又不是ns.item(i).getFirstChild().getNodeValue();
还不如直接写 Node root = doc.getFirstChild();
NodeList nodes = root.getChildNodes();
for(int i=0;i<nodes.getLength();i++){
String s=nodes.item(i).getTextContent();
System.out.print(s+" ");
}
System.out.println();
}