DOM4J类似于一个简单数据库,使用之前须了解java的xml,xml是一种可扩展的标记语言,用于传输数据和存储数据下面是一个简单的xml例子:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE students SYSTEM "students.dtd">
<srudents>
<student id ="001">
<name>黄</name>
<age>40</age>
<sex>男</sex>
</student>
<pre name="code" class="html"></srudents>
这是描述个人信息的xml解析文件
*DOM4J是xml文档的解析方式方式之一,其他方式还有DOM,SAX,JDOM.
*DOM4J的优点是性能高,功能强大,使用简单,在后面会详细体会到其优点。
*一个xml文件只有一个根节点 其中<students></students>是根节点 ,根节点和根节点中的所有标签都是元素节点 , <student id ="001">中的id是属性节点,<age>40</age>中的“40”是文本节点,<!-- -->xml文档中的注释信息
DTD用于定义XML文档的合法建立
如:student.dtd用于定义student.xml文件的结构,可看出定义得到数据类型结构
student.dtd:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT students (student+)>
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student id ID #REQUIRED>
student.xml:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE students SYSTEM "students.dtd">
<students>
<student id="s001">
<name>黄渤</name>
<age>40</age>
<sex>男</sex>
</student>
<student id="s002">
<name>黄磊</name>
<age>45</age>
<sex>男</sex>
</student>
<student id="s003">
<name>黄蓉</name>
<age>20</age>
<sex>女</sex>
</student>
<student id="s004">
<name>黄圣衣</name>
<age>30</age>
<sex>女</sex>
</student>
<student id="s005">
<name>黄老邪</name>
<age>60</age>
<sex>男</sex>
</student>
</students>
类库中提供了一下方法一共操作解析文件的数据
首先我们来更改文本节点中的内容
AlterInfo.java
package pack;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import org.dom4j.Element;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class AlterInfo {
public static void main(String[] args) throws DocumentException,
IOException {
File xmlFile = new File("students.xml"); // 读取解析文件
SAXReader reader = new SAXReader(); // 创建一个SAXReader的对象用来解析xml文件
Document xmlDocument = reader.read(xmlFile);// 解析文件
Element root = xmlDocument.getRootElement();// 获取元素对象
List<Element> list = root.elements();// 通过elements()方法,元素对象会返回一个List集合类
for (Element elements : list) { // 通过遍历的方式查找出叫黄渤的人
if (elements.elementText("name").equals("黄渤")) {
// System.out.println( elements.element("sex").getText());\
elements.element("sex").setText("未知");// 将其系别改成未知
}
} // 此时意见内容修改,未写入解析文件中
// 接下来重新写一个文件并替换原来的文件
FileWriter fw = new FileWriter("students.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");// 定义文本文档格式
XMLWriter write = new XMLWriter(fw, format);
write.write(xmlDocument);
write.close();
fw.close();
}
}
附件:dom4j包