Dom4j学习总结:
本次学习性总结主要从以下四方面进行:
一.?Xml文档的创建及读取方式
二.?Xml文档的修改及删除
三.?Xml技术面的扩展
四.?Xml文档在dom4j技术框架下的实力型应用
首先要引入两个jar包:dom4j.jar和jaxen-1.1-beta-4.jar
一.?Xml文档的创建和读取方式
1.?创建一个document对象
Document?document?=?DocumentHelper.createDocument();
创建一个document型节点(Node)作为根节点,根节点只能有一个
Element?root?=?document.addElement("books");
创建其他Element型节点(Node)作为普通节点
Element?elementBook?=?root.addElement("book");
创建元素节点的属性
Attribute?attributeShow?=?elementBook.addAttribute("show","true");
Attribute?attributeAuthor?=?elementBook.addAttribute("author","zhongshanming");
addAttribute("arg1","arg2");
arg1?表示创建的属性名称
arg2?表示创建的属性值
创建注释,添加文本节点
root.addComment("this?is?a?use?case");
elementBook.addText("My?World");
?将document对象输出,执行创建xml文档的最后一步
XMLWriter?writer?=?new?XMLWriter(new?FileWriter(new?File(sourceFile)));
writer.write(document);
writer.close();
以上是我们在创建xml文档时经常用到的方法,对于其他的一些方法,在开发的过程中,可以以此为基础,举一反三,灵活运用。
2.?Xml文档的读取
1)?SAXReader方式读取
SAXReader?reader?=?new?SAXReader();
Document?document?=?reader.read(new?File(filename));
获取到元素节点
Node?nodeElement?=?document.selectNodes("/books/book")
获取到元素中的属性节点【默认读取第一个】
Node?nodeAttribute?=?document.selectSingleNode("//books/book/@show");
或者[如果使用XPath方式读取,必须添加jaxen-1.1-beta-4.jar]
XPath?xpathNode?=?DocumentHelper.createXPath("//books/book/title");
List?listNode?=?xpathNode.selectNodes(document);
Iterator?itera?=?listNode.iterator();
while(itera.hasNext()){
Node?node?=?(Node)?itera.next();
……………
}
2)?Visitor方式读取
root.accept(new?MyVisitor());
public?class?MyVisitor?extends?VisitorSupport{
public?void?visit(Element?element){
System.out.println(element.getName());
……………..
}
public?void?visit(Attribute?attribute){
System.out.println(attribute.getName());
……………..
}
}
不过这种方式不是可以控制的,当读取到root节点时,监听的类就自动执行了。
二.?Xml文档的修改及删除
1.?xml文档的修改
依据xml文档的读取功能,在遍历节点元素或是属性时,同我们即将要修改的信息进行比较,进而进行修改,如:
XPath?xpathNode?=?DocumentHelper.createXPath("//books/book/title");
List?listNode?=?xpathNode.selectNodes(document);
Iterator?itera?=?listNode.iterator();
while(itera.hasNext()){
Node?node?=?(Node)?itera.next();
if(node.getText().equals("数学分析")){
node.setText("高等数学");
}
}
2.?xml文档的删除
同xml文档的修改是同样的操作,首先需要读取xml文档,然后依据条件遍历并得到要删除的节点,然后直接移除,如:
Node?node?=?(Node)?itera.next();
if(node.getText().equals("数学分析")){
root.remove(node);
}
三.?Xml技术面的扩展
1.?xml文档的格式化和编码
OutputFormat?format?=?OutputFormat.createPrettyPrint();
format.setEncoding("GB2312");
XMLWriter?writer?=?new?XMLWriter(new?FileWriter(new?File(sourceFile)),format);
writer.write(document);
writer.close();
2.?遍历所有的元素节点和属性节点
for(Iterator?iter?=?root.elementIterator();iter.hasNext();){
Element?element?=?(Element)iter.next();
…………..
}
for(Iterator?iter?=?root.attributeIterator();iter.hasNext();){
Attribute?attribute?=?(Attribute)iter.next();
…………..
}
3.?用XSLT转换XML
4.?字符串与XML的转换
5.?
6.?
四.?Xml文档在dom4j技术框架下的应用
1)?XML替代数据库,图书管理小系统
2)?车辆运营管理系统