XML解析技术:Dom4j浅析

DOM4J解析技术

一. Document对象相关

(1) 读取XML文件,获得document对象

eg -> 
SAXReader reader = new SAXReader(); 
Document document 
= reader.read(new File(emp.xml")); 

  


(2) 解析XML形式的文本,得到document对象

eg ->
String text = "元素"
Document document 
= DocumentHelper.parseText(text);

  

(3) 主动创建document对象

eg ->
Document document = DocumentHelper.createDocument(); 
Element root 
= document.addElement("members");// 创建根节点 

  

二. 节点相关

(1) 获取文档的根节点.

eg ->
SAXReader reader = new SAXReader(); 
Document document 
= reader.read(new File(emp.xml")); 

  

(2) 取得某节点的单个子节点

eg ->
Element memberElm=root.element("member");// "member"是节点名 

  

(3) 取得节点的文字

eg ->
DString text=memberElm.getText(); 
或者: 
eg ->
String text=root.elementText("name");//这个是取得根节点下的name字节点的文字 

  

(4) 取得某节点下名为"member"的所有字节点并进行遍历

eg ->
List nodes = rootElm.elements("member"); 
    
for (Iterator it = nodes.iterator(); it.hasNext();) {
        Element elm 
= (Element) it.next(); // do something 
    } 

  

(5)对某节点下的所有子节点进行遍历

eg ->
for(Iterator it=root.elementIterator();it.hasNext();){ 
    Element element 
= (Element) it.next(); // do something 

  

(6) 在某节点下添加子节点

eg ->
Element ageElm = newMemberElm.addElement("age"); 

  

(7)设置节点文字.

eg ->
ageElm.setText("29"); 

  

(8) 删除某节点

eg ->
parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点 

  

(9)添加一个CDATA节点

eg ->
Element contentElm = infoElm.addElement("content"); 
contentElm.addCDATA(diary.getContent()); 
contentElm.getText(); 
// 特别说明:获取节点的CDATA值与获取节点的值是一个方法 
contentElm.clearContent(); //清除节点中的内容,CDATA亦可 

  

三 . 属性相关

(1)取得某节点下的某属性

eg ->
Element root=document.getRootElement(); 
Attribute attribute
=root.attribute("size");// 属性名name 

  

(2)取得属性的文字

eg ->
String text=attribute.getText();

  

或者: eg ->
String text2=root.element("name").attributeValue("firstname"); //这个是取得根节点下name字节点的属性firstname的值. 

  

(3)遍历某节点的所有属性

eg ->
Element root=document.getRootElement(); 
for(Iterator it=root.attributeIterator();it.hasNext();){ 
    Attribute attribute 
= (Attribute) it.next(); 
    String text
=attribute.getText(); 
    System.out.println(text); 

  

(4)设置某节点的属性和文字

eg ->
newMemberElm.addAttribute("name""sitinspring"); 

  

(5) 设置属性的文字

eg ->
Attribute attribute=root.attribute("name"); 
attribute.setText(
"sitinspring"); 

  

(6)删除某属性

eg ->
Attribute attribute=root.attribute("size");// 属性名name 
root.remove(attribute); 

  

四 . 将文档写入XML文件

(1)文档中全为英文,不设置编码,直接写入的形式

eg ->
XMLWriter writer = new XMLWriter(new FileWriter("output.xml")); 
writer.write(document); 
writer.close(); 

  

(2)文档中含有中文,设置编码格式写入的形式

eg ->
OutputFormat format = OutputFormat.createPrettyPrint(); 
format.setEncoding(
"GBK"); // 指定XML编码 
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format); 
writer.write(document); 
writer.close(); 

  

五 . 字符串与XML的转换

(1)将字符串转化为XML

eg ->
String text = " sitinspring "
Document document 
= DocumentHelper.parseText(text); 

  

(2)将文档或节点的XML转化为字符串

eg ->
SAXReader reader = new SAXReader(); 
Document document 
= reader.read(new File("input.xml")); 
Element root
=document.getRootElement(); 
String docXmlText
=document.asXML(); 
String rootXmlText
=root.asXML(); 
Element memberElm
=root.element("member"); 
String memberXmlText
=memberElm.asXML(); 

  


posted on 2011-07-13 17:56  Dream_c  阅读(527)  评论(0编辑  收藏  举报