问题遇到的现象和发生背景
在使用Dom4j增添并美化XML文件中的数据后,原数据出现了缺失:
XML原数据代码
public class Dom4jTest3 {
@Test
public void parseTooList() throws Exception {
//1.导入框架
//2.创建SaxReader对象,创建一个Dom4j的解析器对象,代表整个dom4j框架
SAXReader saxReader = new SAXReader();
//3.加载XML文件成为文档对象Document对象 getResourceAsStream(带/去src下获取文件)
Document document = saxReader.read(Dom4jTest3.class.getResourceAsStream("/Contact2.xml"));
//4.先拿根元素
Element root =document.getRootElement();
//获取第一个子节点
//Element contact = root.element("Contact");
//在第一个子节点下添加节点
//获取 contact 下所有元素
List<Element> list = root.elements();
//创建元素使用
Element ct1= DocumentHelper.createElement("Contact");
Element name1 = ct1.addElement("name");
name1.setText("西门庆");
Element gender1 = ct1.addElement("gender");
gender1.setText("男");
Element email1 = ct1.addElement("email");
email1.setText("ximen@itcast.com");
ct1.addAttribute("id","4");
ct1.addAttribute("vip", "true"); //添加属性
list.add(3,ct1);
}
}
原XML数据文件,注意倒数第二行的“user/user”
<?xml version="1.0" encoding="utf-8"?>
<ContactList>
<Contact id="1" vip="true">
<name>潘金莲</name>
<gender>女</gender
><email>panpan@itcast.com</email>
</Contact>
<Contact id="2" vip="false">
<name>武松</name>
<gender>男</gender>
<email>wusong@itcast.com</email>
</Contact>
<Contact id="3" vip="false">
<name>武大郎</name>
<gender>男</gender>
<email>wuda@itcast.com</email>
</Contact>
<user></user>
</ContactList>
运行结果及报错内容 ,此时倒数第二行只有尾标签 user/ 了,首标签不见了
<?xml version="1.0" encoding="utf-8"?>
<ContactList>
<Contact id="1" vip="true">
<name>潘金莲</name>
<gender>女</gender>
<email>panpan@itcast.com</email>
</Contact>
<Contact id="2" vip="false">
<name>武松</name>
<gender>男</gender>
<email>wusong@itcast.com</email>
</Contact>
<Contact id="3" vip="false">
<name>武大郎</name>
<gender>男</gender>
<email>wuda@itcast.com</email>
</Contact>
<Contact id="4" vip="true">
<name>西门庆</name>
<gender>男</gender>
<email>ximen@itcast.com</email>
</Contact>
<user/>
</ContactList>