dom4j學習筆記(二)

dom4j 有一個很大的優點,可以支持xPath表達式.

下面,以上篇文章中的,ibm.xml爲例,總結一下,修改ibm.xml.

ibm.xml代碼如下:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <catalog> 
  3. <!--An XML Catalog--> 
  4. <?target instruction?>
  5.   <journal title="XML Zone"  publisher="IBM developerWorks"> 
  6.         <article level="Intermediate" date="December-2001">
  7.             <title>Java configuration with XML Schema</title> 
  8.             <author> 
  9.                 <firstname>Marcello</firstname> 
  10.                 <lastname>Vitaletti</lastname> 
  11.             </author>
  12.         </article>
  13.   </journal> 
  14. </catalog>

演示代碼如下:

  1. package org.james.dom4j;
  2. import java.io.File;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.util.Iterator;
  7. import java.util.List;
  8. import org.dom4j.Attribute;
  9. import org.dom4j.Document;
  10. import org.dom4j.DocumentException;
  11. import org.dom4j.Element;
  12. import org.dom4j.io.SAXReader;
  13. import org.dom4j.io.XMLWriter;
  14. public class UpdateXML {
  15.     /**
  16.      * @param args
  17.      */
  18.     @SuppressWarnings("unchecked")
  19.     public static void main(String[] args) {
  20.         SAXReader saxReader = new SAXReader();
  21.         InputStream in=UpdateXML.class.getClassLoader().getResourceAsStream("ibm.xml");
  22.         XMLWriter xmlWriter=null;
  23.         try {
  24.             Document doc=saxReader.read(in);
  25.             List<Element> list = doc.selectNodes("//journal/article");//得到article元素列表.
  26.             Iterator<Element> it = list.iterator();
  27.             while(it.hasNext()){
  28.                 Element elem= it.next();
  29.                 Attribute attri=elem.attribute("level");
  30.                 if(attri.getValue().equals("Intermediate")){//將article元素的屬性修改爲Introductory
  31.                     attri.setValue("Introductory");
  32.                 }
  33.             }
  34.             List<Element> listArticle=doc.selectNodes("//journal/article");
  35.             Iterator<Element> itAtricle=listArticle.iterator();
  36.             while(itAtricle.hasNext()){//迭代修改每個article元素的title子節點的文本.
  37.                 Element elemArticle = itAtricle.next();
  38.                 Iterator<Element> itetor= elemArticle.elementIterator("title");
  39.                 while(itetor.hasNext()){
  40.                     Element titleElem=itetor.next();
  41.                     if("Java configuration with XML Schema".equals(titleElem.getText())){
  42.                         titleElem.setText("Hell Chenyang");
  43.                     }
  44.                 }
  45.             }
  46.             xmlWriter = new XMLWriter(new FileWriter(new File("E://update_ibm.xml")));
  47.             xmlWriter.write(doc);
  48.         
  49.         } catch (DocumentException e) {
  50.             e.printStackTrace();
  51.         } catch (IOException e) {
  52.             e.printStackTrace();
  53.         }finally{
  54.             if(xmlWriter!=null){
  55.                 try {
  56.                     xmlWriter.close();
  57.                 } catch (IOException e) {
  58.                     e.printStackTrace();
  59.                 }
  60.             }
  61.         }
  62.     }
  63. }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章