本人最近因为自身需求,开始接触了XML技术,利用dom4j做一个对XML读写操作的时候,给原XML添加一条数据时遇到了这个错误。
下面分享一下自己解决的心路历程吧。
这是xml文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<people>
<name id="1">张三</name>
<age>20</age>
<sex>男</sex>
<adress>杭州</adress>
<id>001</id>
</people>
<people>
<name id="2">李四</name>
<age>23</age>
<sex>男</sex>
<adress>长沙</adress>
<id>002</id>
</people>
<people>
<name>王五</name>
<age>26</age>
<sex>男</sex>
<adress>武汉</adress>
<id>003</id>
</people>
<people>
<name>王二麻子</name>
<age>25</age>
<sex>男</sex>
<adress>南京</adress>
<id>004</id>
</people>
<people>
<name>韩梅梅</name>
<age>22</age>
<sex>女</sex>
<adress>苏州</adress>
<id>005</id>
</people>
</person>
这是对xml进行读写操作的代码:
public class Demo1 {
@Test
public void read() throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/person.xml"));
Element rootElement = document.getRootElement();
Element person = (Element) rootElement.elements("people").get(1);
String str = person.element("name").attributeValue("id");
String value = person.element("name").getText();
System.out.println(value + str);
}
@Test
public void write() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/person.xml"));
Element people = document.getRootElement().element("people");
people.addElement("like").setText("Android编程");
XMLWriter writer = new XMLWriter(new FileWriter("src/person.xml"));
writer.write(document);
writer.close();
}
}
首先是这样写,运行测试的时候不会报错,但会出现乱码的问题,
这里只需要用dom4j里的OutputFormat设置一个编码格式即可,
然后本萌新设置好编码格式后,再次运行时,就抛出了这个错误,在网上查了很多资料也没有能解决,
最后的原因是因为,xml文件没有还原,所以导致的这个原因。
后来把文件还原后,再次运行的时候就没有问题了。
ps:可能这个错误很弱智,第一次更新博客,见谅见谅。千万记住,每次更新xml文件后出现乱码了,把乱码解决了一定要把xml的内容及时还原,就不会跟本萌新一样遇到这样弱智的问题了。