站長資訊網
        最全最豐富的資訊網站

        dom4j讀取xml(筆記)

        Java代碼 

        1.   

        2. SAXReader reader = new SAXReader();    

        3. Document doc = reader.read(…);    

        4. List childNodes = doc.selectNodes(“//Config/Child/ChildNode”);    

        5. for(Object obj:childNodes) {    

        6. Node childNode = (Node)obj;    

        7.   

        8. String name = childNode.valueOf(“@name”);    

        9. String text = childNode.getText();    

        10. }    

        11.   

        12.   

        13.   

        14. 一.Document對象相關   

        15.   

        16. 1.讀取XML文件,獲得document對象.   

        17.              SAXReader reader = new SAXReader();   

        18.              Document   document = reader.read(new File(“input.xml”));   

        19.   

        20. 2.解析XML形式的文本,得到document對象.   

        21.              String text = “<members></members>”;   

        22.              Document document = DocumentHelper.parseText(text);   

        23. 3.主動創建document對象.   

        24.              Document document = DocumentHelper.createDocument();   

        25.              Element root = document.addElement(“members”);// 創建根節點   

        26. 二.節點相關   

        27.   

        28. 1.獲取文檔的根節點.   

        29. Element rootElm = document.getRootElement();   

        30. 2.取得某節點的單個子節點.   

        31. Element memberElm=root.element(“member”);// “member”是節點名   

        32. 3.取得節點的文字   

        33. String text=memberElm.getText();也可以用:   

        34. String text=root.elementText(“name”);這個是取得根節點下的name字節點的文字.   

        35.   

        36. 4.取得某節點下名為”member”的所有字節點并進行遍歷.   

        37. List nodes = rootElm.elements(“member”);   

        38.   

        39. for (Iterator it = nodes.iterator(); it.hasNext();) {   

        40.     Element elm = (Element) it.next();   

        41.    // do something   

        42. }   

        43. 5.對某節點下的所有子節點進行遍歷.   

        44.             for(Iterator it=root.elementIterator();it.hasNext();){   

        45.                  Element element = (Element) it.next();   

        46.                 // do something   

        47.              }   

        48. 6.在某節點下添加子節點.   

        49. Element ageElm = newMemberElm.addElement(“age”);   

        50. 7.設置節點文字.   

        51. ageElm.setText(“29”);   

        52. 8.刪除某節點.   

        53. parentElm.remove(childElm);// childElm是待刪除的節點,parentElm是其父節點   

        54. 9.添加一個CDATA節點.   

        55.          Element contentElm = infoElm.addElement(“content”);   

        56.          contentElm.addCDATA(diary.getContent());   

        57.   

        58. 三.屬性相關.   

        59. 1.取得某節點下的某屬性   

        60.              Element root=document.getRootElement();       

        61.              Attribute attribute=root.attribute(“size”);// 屬性名name   

        62. 2.取得屬性的文字   

        63.              String text=attribute.getText();也可以用:   

        64. String text2=root.element(“name”).attributeValue(“firstname”);這個是取得根節點下name字節點的屬性firstname的值.   

        65.   

        66. 3.遍歷某節點的所有屬性   

        67.              Element root=document.getRootElement();       

        68.             for(Iterator it=root.attributeIterator();it.hasNext();){   

        69.                  Attribute attribute = (Attribute) it.next();   

        70.                  String text=attribute.getText();   

        71.                  System.out.println(text);   

        72.              }   

        73. 4.設置某節點的屬性和文字.   

        74. newMemberElm.addAttribute(“name”, “sitinspring”);   

        75. 5.設置屬性的文字   

        76.              Attribute attribute=root.attribute(“name”);   

        77.              attribute.setText(“sitinspring”);   

        78. 6.刪除某屬性   

        79.              Attribute attribute=root.attribute(“size”);// 屬性名name   

        80.              root.remove(attribute);   

        81. 四.將文檔寫入XML文件.   

        82. 1.文檔中全為英文,不設置編碼,直接寫入的形式.   

        83. XMLWriter writer = new XMLWriter(new FileWriter(“output.xml”));   

        84. writer.write(document);   

        85. writer.close();   

        86. 2.文檔中含有中文,設置編碼格式寫入的形式.   

        87.              OutputFormat format = OutputFormat.createPrettyPrint();   

        88.              format.setEncoding(“GBK”);    // 指定XML編碼           

        89.              XMLWriter writer = new XMLWriter(new FileWriter(“output.xml”),format);   

        90.                

        91.              writer.write(document);   

        92.              writer.close();   

        93. 五.字符串與XML的轉換   

        94. 1.將字符串轉化為XML   

        95. String text = “<members> <member>sitinspring</member> </members>”;   

        96. Document document = DocumentHelper.parseText(text);   

        97. 2.將文檔或節點的XML轉化為字符串.   

        98.              SAXReader reader = new SAXReader();   

        99.              Document   document = reader.read(new File(“input.xml”));               

        100.              Element root=document.getRootElement();                   

        101.              String docXmlText=document.asXML();   

        102.              String rootXmlText=root.asXML();   

        103.              Element memberElm=root.element(“member”);   

        104.              String memberXmlText=memberElm.asXML();   

        105.   

        106.   

        107.   

        108.   

        109. dom4j API 包含一個解析 XML 文檔的工具。本文中將使用這個解析器創建一個示例 XML 文檔。清單 1 顯示了這個示例 XML 文檔,catalog.xml。   

        110.   

        111. 清單 1. 示例 XML 文檔(catalog.xml)    

        112. <?xml version=”1.0″ encoding=”UTF-8″?>    

        113. <catalog>    

        114. <!–An XML Catalog–>    

        115. <?target instruction?>   

        116.   <journal title=”XML Zone”    

        117.                   publisher=”IBM developerWorks”>    

        118. <article level=”Intermediate” date=”December-2001″>   

        119.  <title>Java configuration with XML Schema</title>    

        120.  <author>    

        121.      <firstname>Marcello</firstname>    

        122.      <lastname>Vitaletti</lastname>    

        123.  </author>   

        124.   </article>   

        125.   </journal>    

        126. </catalog>   

        127.     

        128.   

        129.   

        130. 然后使用同一個解析器修改 catalog.xml,清單 2 是修改后的 XML 文檔,catalog-modified.xml。   

        131.   

        132. 清單 2. 修改后的 XML 文檔(catalog-modified.xml)    

        133. <?xml version=”1.0″ encoding=”UTF-8″?>    

        134. <catalog>    

        135. <!–An XML catalog–>    

        136. <?target instruction?>   

        137.   <journal title=”XML Zone”  

        138.                    publisher=”IBM developerWorks”>    

        139. <article level=”Introductory” date=”October-2002″>   

        140.  <title>Create flexible and extensible XML schemas</title>    

        141.  <author>    

        142.      <firstname>Ayesha</firstname>    

        143.      <lastname>Malik</lastname>    

        144.  </author>    

        145.   </article>   

        146.   </journal>    

        147. </catalog>   

        148.     

        149.   

        150.   

        151. 與 W3C DOM API 相比,使用 dom4j 所包含的解析器的好處是 dom4j 擁有本地的 XPath 支持。DOM 解析器不支持使用 XPath 選擇節點。   

        152.   

        153. 本文包括以下幾個部分:   

        154.   

        155. 預先設置    

        156. 創建文檔    

        157. 修改文檔    

        158. 預先設置   

        159.   

        160. 這個解析器可以從 http://dom4j.org 獲取。通過設置使 dom4j-1.4/dom4j-full.jar 能夠在 classpath 中訪問,該文件中包括 dom4j 類、XPath 引擎以及 SAX 和 DOM 接口。如果已經使用了 JAXP 解析器中包含的 SAX 和 DOM 接口,向 classpath 中增加 dom4j-1.4/dom4j.jar 。 dom4j.jar 包括 dom4j 類和 XPath 引擎,但是不含 SAX 與 DOM 接口。    

        161.   

        162.   

        163.   

        164.     

        165.   

        166.   

        167.  回頁首    

        168.     

        169.   

        170.   

        171.   

        172. 創建文檔   

        173.   

        174. 本節討論使用 dom4j API 創建 XML 文檔的過程,并創建示例 XML 文檔 catalog.xml。   

        175.   

        176. 使用 import 語句導入 dom4j API 類:   

        177.   

        178. import org.dom4j.Document;   

        179. import org.dom4j.DocumentHelper;   

        180. import org.dom4j.Element;   

        181.     

        182.   

        183.   

        184. 使用 DocumentHelper 類創建一個文檔實例。 DocumentHelper 是生成 XML 文檔節點的 dom4j API 工廠類。    

        185.   

        186.  Document document = DocumentHelper.createDocument();    

        187.   

        188.   

        189. 使用 addElement() 方法創建根元素 catalog 。 addElement() 用于向 XML 文檔中增加元素。    

        190.   

        191. Element catalogElement = document.addElement(“catalog”);    

        192.   

        193.   

        194. 在 catalog 元素中使用 addComment() 方法添加注釋“An XML catalog”。    

        195.   

        196.  catalogElement.addComment(“An XML catalog”);    

        197.   

        198.   

        199. 在 catalog 元素中使用 addProcessingInstruction() 方法增加一個處理指令。    

        200.   

        201. catalogElement.addProcessingInstruction(“target”,”text”);    

        202.   

        203.   

        204. 在 catalog 元素中使用 addElement() 方法增加 journal 元素。    

        205.   

        206. Element journalElement =  catalogElement.addElement(“journal”);    

        207.   

        208.   

        209. 使用 addAttribute() 方法向 journal 元素添加 title 和 publisher 屬性。    

        210.   

        211. journalElement.addAttribute(“title”, “XML Zone”);   

        212.          journalElement.addAttribute(“publisher”, “IBM developerWorks”);    

        213.   

        214.   

        215. 向 article 元素中添加 journal 元素。    

        216.   

        217. Element articleElement=journalElement.addElement(“article”);    

        218.   

        219.   

        220. 為 article 元素增加 level 和 date 屬性。    

        221.   

        222. articleElement.addAttribute(“level”, “Intermediate”);   

        223.       articleElement.addAttribute(“date”, “December-2001”);    

        224.   

        225.   

        226. 向 article 元素中增加 title 元素。    

        227.   

        228. Element titleElement=articleElement.addElement(“title”);    

        229.   

        230.   

        231. 使用 setText() 方法設置 article 元素的文本。    

        232.   

        233. titleElement.setText(“Java configuration with XML Schema”);    

        234.   

        235.   

        236. 在 article 元素中增加 author 元素。    

        237.   

        238. Element authorElement=articleElement.addElement(“author”);    

        239.   

        240.   

        241. 在 author 元素中增加 firstname 元素并設置該元素的文本。    

        242.   

        243. Element  firstNameElement=authorElement.addElement(“firstname”);   

        244.      firstNameElement.setText(“Marcello”);    

        245.   

        246.   

        247. 在 author 元素中增加 lastname 元素并設置該元素的文本。    

        248.   

        249. Element lastNameElement=authorElement.addElement(“lastname”);   

        250.      lastNameElement.setText(“Vitaletti”);    

        251.   

        252.   

        253. 可以使用 addDocType() 方法添加文檔類型說明。    

        254.   

        255. document.addDocType(“catalog”, null,”file://c:/Dtds/catalog.dtd”);    

        256.   

        257.   

        258. 這樣就向 XML 文檔中增加文檔類型說明:   

        259.   

        260. <!DOCTYPE catalog SYSTEM “file://c:/Dtds/catalog.dtd”>    

        261.   

        262.   

        263. 如果文檔要使用文檔類型定義(DTD)文檔驗證則必須有 Doctype。   

        264.   

        265. XML 聲明 <?xml version=”1.0″ encoding=”UTF-8″?> 自動添加到 XML 文檔中。    

        266.   

        267. 清單 3 所示的例子程序 XmlDom4J.java 用于創建 XML 文檔 catalog.xml。   

        268.   

        269. 清單 3. 生成 XML 文檔 catalog.xml 的程序(XmlDom4J.java)    

        270. import org.dom4j.Document;   

        271. import org.dom4j.DocumentHelper;   

        272. import org.dom4j.Element;   

        273. import org.dom4j.io.XMLWriter;   

        274. import java.io.*;   

        275. public class XmlDom4J{   

        276. public void generateDocument(){   

        277. Document document = DocumentHelper.createDocument();   

        278.      Element catalogElement = document.addElement(“catalog”);   

        279.      catalogElement.addComment(“An XML Catalog”);   

        280.      catalogElement.addProcessingInstruction(“target”,”text”);   

        281.      Element journalElement =  catalogElement.addElement(“journal”);   

        282.      journalElement.addAttribute(“title”, “XML Zone”);   

        283.      journalElement.addAttribute(“publisher”, “IBM developerWorks”);   

        284.      Element articleElement=journalElement.addElement(“article”);   

        285.      articleElement.addAttribute(“level”, “Intermediate”);   

        286.      articleElement.addAttribute(“date”, “December-2001”);   

        287.      Element  titleElement=articleElement.addElement(“title”);   

        288.      titleElement.setText(“Java configuration with XML Schema”);   

        289.      Element authorElement=articleElement.addElement(“author”);   

        290.      Element  firstNameElement=authorElement.addElement(“firstname”);   

        291.      firstNameElement.setText(“Marcello”);   

        292.      Element lastNameElement=authorElement.addElement(“lastname”);   

        293.      lastNameElement.setText(“Vitaletti”);   

        294.      document.addDocType(“catalog”,   

        295.                            null,”file://c:/Dtds/catalog.dtd”);   

        296.     try{   

        297.     XMLWriter output = new XMLWriter(   

        298.             new FileWriter( new File(“c:/catalog/catalog.xml”) ));   

        299.         output.write( document );   

        300.         output.close();   

        301.         }   

        302.      catch(IOException e){System.out.println(e.getMessage());}   

        303. }   

        304. public static void main(String[] argv){   

        305. XmlDom4J dom4j=new XmlDom4J();   

        306. dom4j.generateDocument();   

        307. }}   

        308.     

        309.   

        310.   

        311. 這一節討論了創建 XML 文檔的過程,下一節將介紹使用 dom4j API 修改這里創建的 XML 文檔。    

        312.   

        313.   

        314.   

        315.     

        316.   

        317.   

        318.  回頁首    

        319.     

        320.   

        321.   

        322.   

        323. 修改文檔   

        324.   

        325. 這一節說明如何使用 dom4j API 修改示例 XML 文檔 catalog.xml。   

        326.   

        327. 使用 SAXReader 解析 XML 文檔 catalog.xml:   

        328.   

        329. SAXReader saxReader = new SAXReader();   

        330.  Document document = saxReader.read(inputXml);    

        331.   

        332.   

        333. SAXReader 包含在 org.dom4j.io 包中。    

        334.   

        335. inputXml 是從 c:/catalog/catalog.xml 創建的 java.io.File。使用 XPath 表達式從 article 元素中獲得 level 節點列表。如果 level 屬性值是“Intermediate”則改為“Introductory”。    

        336.   

        337. List list = document.selectNodes(“//article/@level” );   

        338.       Iterator iter=list.iterator();   

        339.         while(iter.hasNext()){   

        340.             Attribute attribute=(Attribute)iter.next();   

        341.                if(attribute.getValue().equals(“Intermediate”))   

        342.                attribute.setValue(“Introductory”);    

        343.        }    

        344.   

        345.   

        346. 獲取 article 元素列表,從 article 元素中的 title 元素得到一個迭代器,并修改 title 元素的文本。    

        347.   

        348. list = document.selectNodes(“//article” );   

        349.      iter=list.iterator();   

        350.    while(iter.hasNext()){   

        351.        Element element=(Element)iter.next();   

        352.       Iterator iterator=element.elementIterator(“title”);   

        353.    while(iterator.hasNext()){   

        354.    Element titleElement=(Element)iterator.next();   

        355.    if(titleElement.getText().equals(“Java configuration with XML Schema”))   

        356.      titleElement.setText(“Create flexible and extensible XML schema”);   

        357.     }}    

        358.   

        359.   

        360. 通過和 title 元素類似的過程修改 author 元素。    

        361.   

        362. 清單 4 所示的示例程序 Dom4JParser.java 用于把 catalog.xml 文檔修改成 catalog-modified.xml 文檔。   

        363.   

        364. 清單 4. 用于修改 catalog.xml 的程序(Dom4Jparser.java)    

        365. import org.dom4j.Document;   

        366. import org.dom4j.Element;   

        367. import org.dom4j.Attribute;   

        368. import java.util.List;   

        369. import java.util.Iterator;   

        370. import org.dom4j.io.XMLWriter;   

        371. import java.io.*;   

        372. import org.dom4j.DocumentException;   

        373. import org.dom4j.io.SAXReader;    

        374. public class Dom4JParser{   

        375.  public void modifyDocument(File inputXml){   

        376.   try{   

        377.    SAXReader saxReader = new SAXReader();   

        378.    Document document = saxReader.read(inputXml);   

        379.    List list = document.selectNodes(“//article/@level” );   

        380.    Iterator iter=list.iterator();   

        381.    while(iter.hasNext()){   

        382.     Attribute attribute=(Attribute)iter.next();   

        383.     if(attribute.getValue().equals(“Intermediate”))   

        384.       attribute.setValue(“Introductory”);    

        385.        }   

        386.       

        387.    list = document.selectNodes(“//article/@date” );   

        388.    iter=list.iterator();   

        389.    while(iter.hasNext()){   

        390.     Attribute attribute=(Attribute)iter.next();   

        391.     if(attribute.getValue().equals(“December-2001”))   

        392.       attribute.setValue(“October-2002”);   

        393.        }   

        394.    list = document.selectNodes(“//article” );   

        395.    iter=list.iterator();   

        396.    while(iter.hasNext()){   

        397.     Element element=(Element)iter.next();   

        398.     Iterator iterator=element.elementIterator(“title”);   

        399.       while(iterator.hasNext()){   

        400.         Element titleElement=(Element)iterator.next();   

        401.         if(titleElement.getText().equals(“Java configuration with XML   

        402.       Schema”))   

        403.         titleElement.setText(“Create flexible and extensible XML schema”);   

        404.                                           }   

        405.                                 }   

        406.     list = document.selectNodes(“//article/author” );   

        407.     iter=list.iterator();   

        408.      while(iter.hasNext()){   

        409.      Element element=(Element)iter.next();   

        410.      Iterator iterator=element.elementIterator(“firstname”);   

        411.      while(iterator.hasNext()){   

        412.       Element firstNameElement=(Element)iterator.next();   

        413.       if(firstNameElement.getText().equals(“Marcello”))   

        414.       firstNameElement.setText(“Ayesha”);   

        415.                                      }   

        416.                               }   

        417.     list = document.selectNodes(“//article/author” );   

        418.     iter=list.iterator();   

        419.      while(iter.hasNext()){   

        420.       Element element=(Element)iter.next();   

        421.       Iterator iterator=element.elementIterator(“lastname”);   

        422.      while(iterator.hasNext()){   

        423.       Element lastNameElement=(Element)iterator.next();   

        424.       if(lastNameElement.getText().equals(“Vitaletti”))   

        425.       lastNameElement.setText(“Malik”);   

        426.                                   }   

        427.                                }   

        428.      XMLWriter output = new XMLWriter(   

        429.       new FileWriter( new File(“c:/catalog/catalog-modified.xml”) ));   

        430.      output.write( document );   

        431.      output.close();   

        432.    }   

        433.     

        434.   catch(DocumentException e)   

        435.                  {   

        436.                   System.out.println(e.getMessage());   

        437.                             }   

        438.   catch(IOException e){   

        439.                        System.out.println(e.getMessage());   

        440.                     }   

        441.  }   

        442.  public static void main(String[] argv){   

        443.   Dom4JParser dom4jParser=new Dom4JParser();   

        444.   dom4jParser.modifyDocument(new File(“c:/catalog/catalog.xml”));   

        445.                                         }   

        446.    }   

        447.    

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 精品无码久久久久久尤物| 国产精品自在线拍国产| 亚洲AV乱码久久精品蜜桃| 青青草国产精品| 久久国产精品99国产精| 日韩精品欧美激情国产一区| 国内精品久久九九国产精品| 久久久精品人妻一区二区三区蜜桃| 无码精品人妻一区二区三区AV| 99久久亚洲综合精品成人| 91精品国产色综合久久| 日韩精品真人荷官无码| 无码精品人妻一区| 久久996热精品xxxx| 国产精品无码无卡无需播放器| 国产精品高清一区二区人妖| 久久精品中文闷骚内射| 日产精品一线二线三线芒果| 无码欧精品亚洲日韩一区夜夜嗨| 精品国产免费人成网站| 国产精品手机在线观看你懂的 | 国产精品国产三级国产专播| 四虎影视永久在线观看精品| 亚洲精品国产福利一二区| 精品久久久久国产免费 | 国内精品久久久久久久久电影网| 欧美精品第欧美第12页| 精品国产_亚洲人成在线高清| 国产精品久久一区二区三区| 亚洲AV无码精品色午夜果冻不卡 | 国产精品H片在线播放| 国产精品久久久久aaaa| 国产综合精品一区二区三区| 久久久精品人妻一区二区三区蜜桃 | 伊人久久综合精品无码AV专区| 精品国产不卡一区二区三区| 国产在线精品国自产拍影院| 国产精品五月天强力打造| 国自产精品手机在线观看视| 久久久久久国产精品美女| 蜜桃麻豆www久久国产精品 |