当前位置: 代码迷 >> Web前端 >> dom4j基础性学习小结
  详细解决方案

dom4j基础性学习小结

热度:423   发布时间:2012-10-28 09:54:44.0
dom4j基础性学习总结

Dom4j学习总结:

本次学习性总结主要从以下四方面进行:

一.?Xml文档的创建及读取方式

二.?Xml文档的修改及删除

三.?Xml技术面的扩展

四.?Xml文档在dom4j技术框架下的实力型应用

首先要引入两个jar包:dom4j.jarjaxen-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)?车辆运营管理系统

<!--EndFragment-->
  相关解决方案