日期:2014-05-20  浏览次数:20674 次

这个XML读取为何有问题 ?
<?xml version="1.0" encoding="UTF-8"?>

<Student>
<ss>
<banji  id="QQ">
<name>张三</name>
<Sex>男</Sex>
</banji>
<banji  id="QQ">
<name>张三</name>
<Sex>男</Sex>
</banji>
<banji  id="QQ">
<name>张三</name>
<Sex>男</Sex>
</banji>
</ss>
</Student>



import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;


import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


public class Test {
public static void main(String[] args) {
DocumentBuilderFactory doc=DocumentBuilderFactory.newInstance();//创建一个工厂实例
DocumentBuilder db;
try {
db = doc.newDocumentBuilder();//创建解析器
Document dt=db.parse("xml.xml");//得到一个文档对象
NodeList node=dt.getElementsByTagName("ss");这里我改成banji和去掉node.item(i).getFirstChild();的 .getFirstChild()能打印出QQ  但是我现在这种写法不对嘛?  另外问大家一个什么叫节点 什么叫元素 请大家举例说明 总共两个问题 谢谢各位大牛

for(int i=0;i<node.getLength();i++){
Node n=node.item(i).getFirstChild();
Element e=(Element)(n);
System.out.println(e.getAttribute("id"));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}



------解决方案--------------------
Node n=node.item(i).getFirstChild().getNextSibling();

改成这样试试
------解决方案--------------------
DOM API的陷阱。
DOM树包含了被称为“不可忽略的空白”的文本节点,它是标签之间的空白(如回车符)。