1.首先要有dom4j.jar,然后在点项目,右键,Build Path --> Add External Archives,然后找到dom4j.jar的位置,把它引入。
2.示例XML文档,之后操作以此文档为基础
<?xml version="1.0" encoding="GBK"?>
<books>
<!--this is a test-->
<book show="yes">
<title>title is here</title>
</book>
<owner>i am owner</owner>
</books>
这是一个很简单的XML文档,场景是一个网上书店,每本书有两个属性,一个是书名[title],一个为是否展示[show],另一项是这些书的拥有者[owner]信息。
3.建立一个xml文档,把它放在相应的D盘目录下。
具体如下:
import java.io.File;
import java.io.FileWriter;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Create {
public int createXMLFile(String filename) {
// 创建一个xml文本
Document document = DocumentHelper.createDocument();
// 首先添加根节点
Element booksElement = document.addElement("books");
// 添加注释
booksElement.addComment("this is a test");
// 添加根节点books的子节点---book节点
Element bookElement = booksElement.addElement("book");
// 设置book节点的属性
bookElement.addAttribute("show", "yes");
// 再追加一个title节点
Element titleElement = bookElement.addElement("title");
titleElement.setText("title is here");
// 追加一个owner节点
Element ownerElement = booksElement.addElement("owner");
ownerElement.setText("i am owner");
try {
// 输出该xml文件
XMLWriter writer = new XMLWriter(new FileWriter(new File(
"d://abc.xml")));
writer.write(document);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
public int formatXMLFile(String filename) {
int returnValue = 0;
try {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
XMLWriter writer = null;
// 格式化输出
OutputFormat format = OutputFormat.createPrettyPrint();
// 指定XML编码
format.setEncoding("GBK");
writer = new XMLWriter(new FileWriter(filename), format);
writer.write(document);
writer.close();
// 执行成功,需返回1
returnValue = 1;
} catch (Exception ex) {
ex.printStackTrace();
}
return returnValue;
}
public static void main(String[] args) {
new Create().createXMLFile(null);
new Create().formatXMLFile("d://abc.xml");
}
}
然后在d盘会生成一个abc.xml,内容和上面的文档一样。
4. 解析xml
import java.io.File;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Read {
public void read(String filename) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(filename));
// 获得根节点
Element rootElm = document.getRootElement();
// 获得该节点名字
String name = rootElm.getName();
System.out.println(name);
// 遍历所有子节点
Iterator iter = rootElm.elementIterator();
// 如果子节点存在
while (iter.hasNext()) {
// 取出子节点对象
Element bb = (Element) iter.next();
// 打印其属性
System.out.println(bb.attributeValue("show"));
}
// 获得子节点book对象
Element bookElement = rootElm.element("book");
// 获得book节点下的title对象
Element titleElement = bookElement.element("title");
System.out.println(titleElement.getText());
// 获得该节点属性
Attribute attribute = bookElement.attribute("show");
String attName = attribute.getText();
// 遍历它的所有属性
Iterator it = bookElement.attributeIterator();
while (it.hasNext()) {
// 取出其所有属性
Attribute attri = (Attribute) it.next();
String text = attribute.getText();
System.out.println(text);
}
}
public static void main(String[] args) throws DocumentException {
new DomRead().read("d:/a.xml");
}
}
这主要是读取xml里的一些信息。
过程注意导入的那些类,其中有些和别的很相像,不小心就会弄错,导致写的过程中会报错。