Dom4j是功能强大而且容易使用的Java xml编程模型。Dom4j专为Java平台设计,完全支持Java集合框架,支持JAXP,TrAX,DOM,SAX,XSLT,集成XPATH。
一个非常简单的例子: (XML文件使用前面《XML基础》所用的XML文件)
得到Document:
SAXReader reader
=
new
SAXReader();
Document document
=
reader.read(XmlFile.getSample2Stream());
XmlFile的代码:
public
static
InputStream getSample1Stream()
...
{
return XmlFile.class.getResourceAsStream("/sample.xml");
}

public
static
InputStream getSample2Stream()
...
{
return XmlFile.class.getResourceAsStream("/sample2.xml");
}
遍历:
public
void
printTree(Document doc)
...
{
Element root = doc.getRootElement();
this.printElement(root, "");
}

private
void
printElement(Element em, String prefix)
...
{
System.out.println(prefix + em.getName());
for (Iterator itr = em.attributeIterator(); itr.hasNext();)
...{
Attribute attr = (Attribute) itr.next();
System.out.print(prefix+attr.getName());
System.out.println("=" + attr.getData());
}
if (em.getTextTrim()!=null&&!em.getTextTrim().equals(""))
...{
System.out.println(prefix+em.getTextTrim());
}
for (Iterator itr = em.elementIterator(); itr.hasNext();)
...{
Element sub = (Element) itr.next();
this.printElement(sub, prefix + " ");
}
}
可以看到Dom4j的iterator接口非常好用,类似于Java的iterator。
修改:操作也很简单,创建一个节点,增加到文档中的某个节点下就可以。
public
void
changeOrder(Document doc)
...
{
Element root = doc.getRootElement();
Element order = root.element("order");
Element item = new BaseElement("item");
Element desc = new BaseElement("desc");
desc.setText("我爱中国");
item.add(desc);
item.addAttribute("sku", "o319-wp");
item.addAttribute("quantity", "122");
order.add(item);
}
输出:
public
void
write(Document document)
throws
Exception
...
{
XMLWriter writer = new XMLWriter(System.out, new OutputFormat());
writer.write(document);
writer.flush();
}
此外,Dom4j还支持xpath(代码来自与Dom4j官网)xpath请参考http://www.w3school.com.cn/xpath/
public void bar(Document document) {
List list = document.selectNodes( "//foo/bar" );
Node node = document.selectSingleNode( "//foo/bar/author" );
String name = node.valueOf( "@name" );
}
总的来说,Dom4j是一个很不错的框架,小巧玲珑,容易使用,效率不错(超过JDOM),Dom4j可以使用不同的解析器,比如Crimson 或 Xerces,也支持Java对xml的抽象JAXP。
本文介绍Dom4j——一种高效且易于使用的Java XML处理库。文章通过实例展示了如何使用Dom4j读取、遍历、修改XML文件,并利用XPath进行查询。

被折叠的 条评论
为什么被折叠?



