在Java中使用DOM解析XML文件,并添加信息
一、创建DOM解析器工厂实例:
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
二、创建DOM解析器实例:
DocumentBuilder builder=factory.newDocumentBuilder();
三、 解析的XML文件
获得DOM树:
Document doc=builder.parse("src/student.xml");
四、获得根元素
Element root=doc.getDocumentElement();
五、获得根元素的子节点集合(所有的student)
NodeList student=root.getChildNodes();
六、使用循环遍历
for(int i=0;i<student.getLength();i++){
七、在循环中获得每个子节点
由于在xml文件中的内容有格式化效果会出现“空白字符”问题,也就是说在根元素students和第一个student元素之间会出现空白字符,若我们只需要获得Element(元素节点)则我们需要判断下:
if(student.item(i) instanceof Element){
Element stu=(Element)student.item(i);
八、 获得sid属性的值
获得student节点中的属性:
System.out.println("学号:"+stu.getAttribute("sid"));
九、接下来,我们就要遍历student节点的name、sex、age节点的文本了。
首先要获得student节点的子节点集合:
NodeList childred=stu.getChildNodes();
十、使用for循环遍历子节点集合:
for(int j=0;j<childred.getLength();j++){
十一、 获得元素的文本
if(childred.item(j) instanceof Element){
获得文本内容
Element child=(Element)childred.item(j);
System.out.print(child.getTextContent()+" ");
}
接下来我们实现下在DOM树中添加一个student并设置属性,添加name、sex、age
一、首先获得根元素:
Element root=doc.getDocumentElement();
二、使用Document的实例创建元素节点student
Element newEl=doc.createElement("student");
三、添加属性
newEl.setAttribute("sid", "jt00403");
四、使用相同的方式创建name、sex、age节点
Element name=doc.createElement("name");
name.setTextContent("路飞");
Element sex=doc.createElement("sex");
sex.setTextContent("男");
Element age=doc.createElement("age");
age.setTextContent("17");
五、使用父节点添加字节点:
newEl为name、sex、age的父节点,所以使用newEl节点的appendChild()方法添加。
newEl.appendChild(name);
newEl.appendChild(sex);
newEl.appendChild(age);
然后使用根元素节点root将newEl添加到DOM树上
root.appendChild(newEl);