dom4j

dom4j 是一种解析 XML 文档的开放源代码 XML 框架,与 W3C DOM API 相比,使用 dom4j 所包含的解析器的好处是 dom4j 拥有本地的 XPath 支持.DOM 解析器不支持使用 XPath 选择节点.

  该解析器可以从 http://dom4j.org/ 获取.

java 代码
  1. package com.nikee.dom4j;   
  2. import org.dom4j.Document;   
  3. import org.dom4j.DocumentHelper;   
  4. import org.dom4j.Element;   
  5. import org.dom4j.io.OutputFormat;   
  6. import org.dom4j.io.XMLWriter;   
  7. import java.io.*;   
  8.     
  9. public class XmlDom4J{   
  10.  public void generateDocument(){   
  11.   //使用 DocumentHelper 类创建一个文档实例。 DocumentHelper 是生成 XML 文档节点的 dom4j API 工厂类   
  12.   Document document = DocumentHelper.createDocument();   
  13.      
  14.   //使用 addElement()方法创建根元素catalog , addElement()用于向 XML 文档中增加元素   
  15.   Element catalogElement = document.addElement("catalog");   
  16.      
  17.   //在 catalog 元素中使用 addComment() 方法添加注释"An XML catalog"   
  18.   catalogElement.addComment("An XML Catalog");   
  19.      
  20.   //在 catalog 元素中使用 addProcessingInstruction() 方法增加一个处理指令   
  21.   catalogElement.addProcessingInstruction("target","text");   
  22.      
  23.   //在 catalog 元素中使用 addElement() 方法增加 journal 元素   
  24.   Element journalElement = catalogElement.addElement("journal");   
  25.   //使用 addAttribute() 方法向 journal 元素添加 title 和 publisher 属性   
  26.   journalElement.addAttribute("title""XML Zone");   
  27.   journalElement.addAttribute("publisher""IBM developerWorks");   
  28.      
  29.      
  30.   Element articleElement=journalElement.addElement("article");   
  31.   articleElement.addAttribute("level""Intermediate");   
  32.   articleElement.addAttribute("date""December-2001");   
  33.      
  34.   Element titleElement=articleElement.addElement("title");   
  35.   titleElement.setText("Java configuration with XML Schema");   
  36.      
  37.   Element authorElement=articleElement.addElement("author");   
  38.   Element firstNameElement=authorElement.addElement("firstname");   
  39.   firstNameElement.setText("Marcello");   
  40.   Element lastNameElement=authorElement.addElement("lastname");   
  41.   lastNameElement.setText("Vitaletti");   
  42.      
  43.   //可以使用 addDocType() 方法添加文档类型说明   
  44.   //这样就向 XML 文档中增加文档类型说明:   
  45.   document.addDocType("catalog","nikee","file://c:/Dtds/catalog.dtd");   
  46.   try{   
  47.    //XMLWriter output = new XMLWriter(new FileWriter( new File("D:/eclipse3.2/workspace/WebServices/src/com/nikee/dom4j/catalog.xml")));   
  48.     FileOutputStream fos=new FileOutputStream("D:/eclipse3.2/workspace/WebServices/src/com/nikee/dom4j/catalog.xml");   
  49.        OutputFormat of=new OutputFormat("    "true);   
  50.        XMLWriter xw=new XMLWriter(fos, of);   
  51.        xw.write( document );   
  52.        xw.close();   
  53.   }   
  54.   catch(IOException e)   
  55.   {   
  56.    System.out.println(e.getMessage());   
  57.   }   
  58.  }   
  59.     
  60.  public static void main(String[] argv){   
  61.   XmlDom4J dom4j=new XmlDom4J();   
  62.   dom4j.generateDocument();   
  63.  }   
  64. }   
  65.   
  66.     

    xml 代码

 

  1. <!--sp-->xml version="1.0" encoding="UTF-8"?>  
  2. <!--CTYPE catalog PUBLIC "nikee" "file://c:/Dtds/catalog.dtd"</sp-->>  
  3.   
  4.  <catalog>  
  5.     <!--An XML Catalog--><!--sp-->target text?>  
  6.   
  7.     <journal title="XML Zone" publisher="IBM developerWorks">  
  8.      <article level="Intermediate" date="December-2001">  
  9.          <title>Java configuration with XML Schematitle>  
  10.          <author>  
  11.              <firstname>Marcellofirstname>  
  12.              <lastname>Vitalettilastname>  
  13.          author>  
  14.      article>  
  15.     journal>  
  16.  catalog>  

 

XmlDom4J.java 用于创建 XML 文档 catalog.xml

java 代码
  1. package com.nikee.dom4j;   
  2.   
  3. import org.dom4j.Document;   
  4. import org.dom4j.Element;   
  5. import org.dom4j.Attribute;   
  6. import java.util.List;   
  7. import java.util.Iterator;   
  8.   
  9. import org.dom4j.io.OutputFormat;   
  10. import org.dom4j.io.XMLWriter;   
  11. import java.io.*;   
  12.   
  13. import org.dom4j.DocumentException;   
  14. import org.dom4j.io.SAXReader;    
  15.     
  16. public class Dom4Jparser{   
  17.     public Dom4Jparser(){   
  18.         //construction   
  19.     }   
  20.        
  21.     public void modifyDocument(File inputXml){   
  22.         try{   
  23.             //使用 SAXReader 解析 XML 文档 catalog.xml   
  24.             SAXReader saxReader = new SAXReader();   
  25.             Document document = saxReader.read(inputXml);   
  26.                
  27.             //使用 XPath 表达式从 article 元素中获得 level 节点列表。如果 level 属性值是"Intermediate"则改为"Introductory"   
  28.             List list = document.selectNodes("//article/@level");   
  29.             Iterator iter=list.iterator();   
  30.             while(iter.hasNext()){   
  31.                 Attribute attribute=(Attribute)iter.next();   
  32.                 if(attribute.getValue().equals("Intermediate"))   
  33.                     attribute.setValue("Introductory");    
  34.             }   
  35.                
  36.             list = document.selectNodes("//article/@date" );   
  37.             iter=list.iterator();   
  38.             while(iter.hasNext()){   
  39.                 Attribute attribute=(Attribute)iter.next();   
  40.                 if(attribute.getValue().equals("December-2001"))   
  41.                     attribute.setValue("October-2002");   
  42.             }   
  43.                
  44.             //获取 article 元素列表,从 article 元素中的 title 元素得到一个迭代器,并修改 title 元素的文本   
  45.             list = document.selectNodes("//article" );   
  46.             iter=list.iterator();   
  47.             while(iter.hasNext()){   
  48.                 Element element=(Element)iter.next();   
  49.                 Iterator iterator=element.elementIterator("title");   
  50.                 while(iterator.hasNext()){   
  51.                     Element titleElement=(Element)iterator.next();   
  52.                     if(titleElement.getText().equals("Java configuration with XML Schema"))   
  53.                         titleElement.setText("Create flexible and extensible XML schema");   
  54.                 }   
  55.             }   
  56.                
  57.                
  58.             list = document.selectNodes("//article/author" );   
  59.             iter=list.iterator();   
  60.             while(iter.hasNext()){   
  61.                 Element element=(Element)iter.next();   
  62.                 Iterator iterator=element.elementIterator("firstname");   
  63.                 while(iterator.hasNext()){   
  64.                     Element firstNameElement=(Element)iterator.next();   
  65.                     if(firstNameElement.getText().equals("Marcello"))   
  66.                         firstNameElement.setText("Ayesha");   
  67.                 }   
  68.             }   
  69.                
  70.             list = document.selectNodes("//article/author" );   
  71.             iter=list.iterator();   
  72.             while(iter.hasNext()){   
  73.                 Element element=(Element)iter.next();   
  74.                 Iterator iterator=element.elementIterator("lastname");   
  75.                 while(iterator.hasNext()){   
  76.                     Element lastNameElement=(Element)iterator.next();   
  77.                     if(lastNameElement.getText().equals("Vitaletti"))   
  78.                         lastNameElement.setText("Malik");   
  79.                 }   
  80.             }   
  81.                
  82.             FileOutputStream fos=new FileOutputStream("D:/eclipse3.2/workspace/WebServices/src/com/nikee/dom4j/catalog-modified.xml");   
  83.             OutputFormat of=new OutputFormat("   ",true);   
  84.             XMLWriter xw=new XMLWriter(fos, of);   
  85.             xw.write( document );   
  86.             xw.close();   
  87.         }   
  88.         catch(DocumentException e)   
  89.         {   
  90.             e.printStackTrace();   
  91.         }   
  92.         catch(IOException e){   
  93.             e.printStackTrace();   
  94.         }   
  95.     }   
  96.        
  97.     public static void main(String argv[]){   
  98.         Dom4Jparser dom4jParser=new Dom4Jparser();   
  99.         dom4jParser.modifyDocument(new File("D:/eclipse3.2/workspace/WebServices/src/com/nikee/dom4j/catalog.xml"));   
  100.     }   
  101. }   
  102.   

 

xml 代码
  1. <!--sp-->xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <!--<!DOCTYPE catalog PUBLIC "nikee" "file://c:/Dtds/catalog.dtd">-->  
  4. <catalog>  
  5. <!--An XML Catalog--><!--sp-->target text?>  
  6.  <journal title="XML Zone" publisher="IBM developerWorks">    
  7.    <article level="Introductory" date="October-2002">      
  8.       <title>Create flexible and extensible XML schematitle>  
  9.       <author>       
  10.          <firstname>Ayeshafirstname>  
  11.          <lastname>Maliklastname>  
  12.       author>  
  13.    article>  
  14.  journal>  
  15. catalog>  

 Dom4Jparser.java用于修改 XML 文档 catalog.xml为catalog-modified.xml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值