DOM4J是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过DOM4J API和标准DOM接口具有并行访问功能.
DOM4J是JAVA特有的解析方法。需要先导入DOM4J的jar包才能调用对应方法。
dom4j-2.0.2.jar
(一)jar包导入后,我们先来解析book.xml文件读取xml文件中的信息,步骤如下:
1、创建SAXReader对象reader
SAXReader reader = new SAXReader();
2、 通过reader对象的read方法加载book.xml文件,获取document对象
Document document = reader.read(file);
3、 通过document对象获取跟几点bookstore
Element bookStore = document.getRootElement();
4、 通过element对象的elementIterator方法获取迭代器
Iterator it = bookStore.elementIterator();
5、 遍历迭代器,获取根节点的信息
6、 迭代获取element的属性名和属性值
7、 获取element的节点名和节点值
具体代码如下:
SAXReader reader = new SAXReader();
File file = new File("book.xml");
try {
Document document = reader.read(file);
Element bookStore = document.getRootElement();
Iterator<Element> it = bookStore.elementIterator();
int i = 0;
while (it.hasNext()) {
i++;
System.out.println("=============开始遍历第" + i + "本书==========");
Element element = it.next();
List<Attribute> bookAttrs = element.attributes();
for (Attribute attr : bookAttrs) {
System.out.println("属性名:" + attr.getName() + "-----属性值:" + attr.getValue());
}
Iterator<Element> childNode = element.elementIterator();
while (childNode.hasNext()) {
Element child = childNode.next();
System.out.println("节点名:" + child.getName() + "-----节点值:" + child.getStringValue());
}
System.out.println("=============结束遍历第" + i + "本书==========");
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
(二)可以往book.xml中写入内容,步骤如下:
1、创建document对象,代表整个xml文档
Document document = DocumentHelper.createDocument();
2、创建根节点bookstore
Element bookstore = document.addElement(“bookstore”);
3、生成子节点及节点下的内容
Element book= bookstore.addElement(“book”);
4、给子节点添加属性
book.addAttribute(“id”, “1001”);
5、设置生成xml格式
OutputFormat format = OutputFormat.createPrettyPrint();
6、生成xml文件
代码如下:
Document document = DocumentHelper.createDocument();
Element rss = document.addElement("bookstore");
Element book= rss.addElement("book");
book.addAttribute("id", "1001");
Element name= book.addElement("name");
name.setText("java编程思想");
OutputFormat format = OutputFormat.createPrettyPrint();
//设置编码格式为gbk,默认utf-8
format.setEncoding("gbk");
try {
File f = new File("books.xml");
XMLWriter writer = new XMLWriter(new FileOutputStream(f), format);
//设置是否转义。默认true,代表转义
writer.setEscapeText(false);
writer.write(document);
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
生成books.xml如下:
<?xml version="1.0" encoding="gbk"?>
<bookstore>
<book id="1001">
<name>java编程思想</name>
</book>
</bookstore>
created by 李晓晴