久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

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

      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.主動創(chuàng)建document對象.   

      24.              Document document = DocumentHelper.createDocument();   

      25.              Element root = document.addElement(“members”);// 創(chuàng)建根節(jié)點   

      26. 二.節(jié)點相關   

      27.   

      28. 1.獲取文檔的根節(jié)點.   

      29. Element rootElm = document.getRootElement();   

      30. 2.取得某節(jié)點的單個子節(jié)點.   

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

      32. 3.取得節(jié)點的文字   

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

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

      35.   

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

      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.對某節(jié)點下的所有子節(jié)點進行遍歷.   

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

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

      46.                 // do something   

      47.              }   

      48. 6.在某節(jié)點下添加子節(jié)點.   

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

      50. 7.設置節(jié)點文字.   

      51. ageElm.setText(“29”);   

      52. 8.刪除某節(jié)點.   

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

      54. 9.添加一個CDATA節(jié)點.   

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

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

      57.   

      58. 三.屬性相關.   

      59. 1.取得某節(jié)點下的某屬性   

      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”);這個是取得根節(jié)點下name字節(jié)點的屬性firstname的值.   

      65.   

      66. 3.遍歷某節(jié)點的所有屬性   

      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.設置某節(jié)點的屬性和文字.   

      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.將文檔或節(jié)點的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 文檔的工具。本文中將使用這個解析器創(chuàng)建一個示例 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 選擇節(jié)點。   

      152.   

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

      154.   

      155. 預先設置    

      156. 創(chuàng)建文檔    

      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. 創(chuàng)建文檔   

      173.   

      174. 本節(jié)討論使用 dom4j API 創(chuàng)建 XML 文檔的過程,并創(chuàng)建示例 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 類創(chuàng)建一個文檔實例。 DocumentHelper 是生成 XML 文檔節(jié)點的 dom4j API 工廠類。    

      185.   

      186.  Document document = DocumentHelper.createDocument();    

      187.   

      188.   

      189. 使用 addElement() 方法創(chuàng)建根元素 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 用于創(chuàng)建 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. 這一節(jié)討論了創(chuàng)建 XML 文檔的過程,下一節(jié)將介紹使用 dom4j API 修改這里創(chuàng)建的 XML 文檔。    

      312.   

      313.   

      314.   

      315.     

      316.   

      317.   

      318.  回頁首    

      319.     

      320.   

      321.   

      322.   

      323. 修改文檔   

      324.   

      325. 這一節(jié)說明如何使用 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 創(chuàng)建的 java.io.File。使用 XPath 表達式從 article 元素中獲得 level 節(jié)點列表。如果 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號