<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### 1.JDOM解析XML文檔 1.1 簡介 JDOM是一個開源項目,它基于樹型結構,利用純JAVA的技術對XML文檔實現解析、生成、序列化以及多種操作。JDOM 直接為JAVA編程服務。它利用更為強有力的JAVA語言的諸多特性(方法重載、集合概念以及映射),把SAX和DOM的功能有效地結合起來。在使用設計上盡可能地隱藏原來使用XML過程中的復雜性。利用JDOM處理XML文檔將是一件輕松、簡單的事。 JDOM幫助文檔 :?[http://www.jdom.org/docs/apidocs/](http://www.jdom.org/docs/apidocs/) Jar包下載地址:[點擊打開鏈接](http://download.csdn.net/detail/sunnyyoona/9387707) 1.2 解析步驟 (1)創建SAXBuilder對象 ~~~ SAXBuilder saxBuilder = new SAXBuilder(); ~~~ (2)創建輸入流對象并將XML文檔加載到輸入流中 ~~~ FileInputStream inputStream = new FileInputStream("D:\\bookstore.xml"); ~~~ (3)通過saxBuilder對象的build方法將輸入流加載到saxBuilder中(注意:Document 所引用的包是org.jdom2.Document;) ~~~ Document document = saxBuilder.build(inputStream); ~~~ (4)通過document對象獲取XML文檔的根節點 ~~~ Element rootElement = document.getRootElement(); ~~~ (5)根據根節點獲取根節點下的子節點集合 ~~~ List<Element> bookList = rootElement.getChildren(); ~~~ (6)根據節點獲取屬性節點集合 ~~~ List<Attribute> attrList = book.getAttributes(); ~~~ (7)根據節點(元素節點或者屬性節點)獲取節點名稱和節點值 ~~~ // 屬性名稱 node.getName(); // 屬性值 node.getValue(); ~~~ 1.3 主要方法 (1)返回文檔的根節點 public Element getRootElement() ~~~ // document為Document對象 Element rootElement = document.getRootElement(); ~~~ (2)返回節點的所有子節點的集合 public java.util.List<Element> getChildren() ~~~ // rootElement為Element對象 List<Element> bookList = rootElement.getChildren(); ~~~ (3)返回節點的所有屬性節點的集合 public java.util.List<Attribute> getAttributes() ~~~ // book為Element對象 List<Attribute> attrList = book.getAttributes() ~~~ (4)根據子節點的名稱返回節點的子節點 public Element getChild(java.lang.String cname) ~~~ Element titleElement = book.getChild("title"); ~~~ (5)返回節點的名稱 public java.lang.String getName() ~~~ // titleElement為title節點 titleElement.getName(); ~~~ (6)返回節點值 public java.lang.String getValue()、 ~~~ titleElement.getValue() ~~~ DOM方式getNodeValue() 對于元素節點時返回null。不同于DOM方式,JDOM無論是屬性節點還是元素節點都會返回節點對應的文本值。 ~~~ <author>Scott Meyers</author> ~~~ 對于這個節點來說,DOM的getNodeValue()返回null,JDOM的getValue()返回"Scott Meyers"。 1.3 具體實例 ~~~ package com.qunar.xml; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.List; import org.jdom2.Attribute; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; /** * JDOM解析XML文檔 * @author sjf0115 * */ public class JDOMXMLCode { public static void main(String[] args) { try { // 創建SAXBuilder對象 SAXBuilder saxBuilder = new SAXBuilder(); // 創建輸入流對象并將XML文檔加載到輸入流中 FileInputStream inputStream = new FileInputStream("D:\\bookstore.xml"); // 通過saxBuilder對象的build方法將輸入流加載到saxBuilder中 Document document = saxBuilder.build(inputStream); // 通過document對象獲取XML文檔的根節點 Element rootElement = document.getRootElement(); // 根據根節點獲取根節點下的子節點集合 List<Element> bookList = rootElement.getChildren(); // 遍歷子節點 for (Element book : bookList) { System.out.println("開始解析一本書..."); // 解析屬性 List<Attribute> attrList = book.getAttributes(); for (Attribute attribute : attrList) { // 屬性名稱 System.out.print("---" + attribute.getName() + ":"); // 屬性值 System.out.println(attribute.getValue()); }//for // 獲取book節點下的子節點 List<Element> bookChildren = book.getChildren(); for (Element bookChild : bookChildren) { // 節點名稱 System.out.print("------" + bookChild.getName() + ":"); // 節點值 System.out.println(bookChild.getValue()); }//for System.out.println("結束解析一本書..."); }//for } catch (FileNotFoundException e) { e.printStackTrace(); } catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } ~~~ **運行結果:** <table cellspacing="0" cellpadding="0" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:942px"><tbody><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:941px"><br/><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">開始解析一本書...</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">---category:Java</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">------title:Java多線程編程核心技術</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">------author:高洪巖</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">------year:2015</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">------price:69.00</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">結束解析一本書...</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">開始解析一本書...</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">---category:C++</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">------title:Effective?C++:?55?Specific?Ways?to?Improve?Your?Programs?and?Designs</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">------author:Scott?Meyers</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">------year:2006</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">------price:58.00</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">結束解析一本書...</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">開始解析一本書...</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">---category:Web</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">------title:Learning?XML</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">------author:Erik?T.?Ray</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">------year:2016</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">------price:39.95</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">結束解析一本書...</span></div></td></tr></tbody></table> ### 2.DOM4J解析XML文檔 2.1 簡介 DOM4J是一個Java的XML API,類似于JDOM,用來讀寫XML文件的。DOM4J是一個十分優秀的JavaXML API,具有性能優異、功能強大和極其易使用的特點,同時它也是一個開放源代碼的軟件,可以在SourceForge上找到它。如今可以看到越來越多的Java軟件都在使用DOM4J來讀寫XML,特別值得一提的是連Sun的JAXM也在用DOM4J。這已經是必須使用的jar包, Hibernate也用它來讀寫配置文件。 Jar包下載地址:[點擊打開鏈接](http://download.csdn.net/detail/sunnyyoona/9388272) 2.2解析 (1)創建SAXReader對象 ~~~ SAXReader saxReader = new SAXReader(); ~~~ (2)通過SaxReader對象的read方法加載XML文檔獲取Document對象 ~~~ Document document = saxReader.read(new File("D:\\bookstore.xml")); ~~~ (3)通過Document對象獲取根節點 ~~~ Element bookstore = document.getRootElement(); ~~~ (4)通過Element對象的elementIterator方法獲取迭代器 ~~~ Iterator iterator = bookstore.elementIterator(); ~~~ (5)遍歷迭代器獲取根節點的信息 ~~~ while (iterator.hasNext()) { // 獲取下一個子節點 Element book = (Element)iterator.next(); } ~~~ (6)獲取屬性節點的屬性名稱和屬性值 ~~~ // 獲取book的屬性節點集合 List<Attribute> bookAttr = book.attributes(); // 遍歷book屬性節點 for (Attribute attribute : bookAttr) { // 獲取book的屬性節點的屬性名稱以及屬性值 System.out.println("name:" + attribute.getName() + " value:" + attribute.getValue()); }//for ~~~ (7)獲取元素節點的節點名稱和對應的文本值 ~~~ Iterator ite = book.elementIterator(); // 遍歷book節點的子節點 while(ite.hasNext()){ // book節點的子節點 Element bookChild = (Element)ite.next(); System.out.println("name:" + bookChild.getName() + " value:" + bookChild.getStringValue()); //System.out.println("name:" + bookChild.getName() + " value:" + bookChild.getText()); }//while ~~~ 2.3 具體案例 ~~~ package com.qunar.xml; import java.io.File; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class DOM4JXMLCode { public static void main(String[] args) { try { // 創建SAXReader對象 SAXReader saxReader = new SAXReader(); // 通過SaxReader對象的read方法加載XML文檔獲取Document對象 Document document = saxReader.read(new File("D:\\bookstore.xml")); // 通過Document對象獲取根節點 Element bookstore = document.getRootElement(); // 通過Element對象的elementIterator方法獲取迭代器 Iterator iterator = bookstore.elementIterator(); // 遍歷根節點的子節點 while (iterator.hasNext()) { System.out.println("開始解析一本書..."); // 獲取下一個元素節點 Element book = (Element)iterator.next(); // 獲取book的屬性節點集合 List<Attribute> bookAttr = book.attributes(); // 遍歷book屬性節點 for (Attribute attribute : bookAttr) { // 獲取book的屬性節點的屬性名稱以及屬性值 System.out.println("name:" + attribute.getName() + " value:" + attribute.getValue()); }//for Iterator ite = book.elementIterator(); // 遍歷book節點的子節點 while(ite.hasNext()){ // book節點的子節點 Element bookChild = (Element)ite.next(); System.out.println("name:" + bookChild.getName() + " value:" + bookChild.getStringValue()); //System.out.println("name:" + bookChild.getName() + " value:" + bookChild.getText()); }//while System.out.println("結束解析一本書..."); } } catch (DocumentException e) { e.printStackTrace(); } } } ~~~ **運行結果:** <table cellspacing="0" cellpadding="0" style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:942px"><tbody><tr><td style="border-collapse:collapse; border:1px solid rgb(187,187,187); width:941px"><br/><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">開始解析一本書...</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:category???value:Java</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:title???value:Java多線程編程核心技術</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:author???value:高洪巖</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:year???value:2015</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:price???value:69.00</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">結束解析一本書...</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">開始解析一本書...</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:category???value:C++</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:title???value:Effective?C++:?55?Specific?Ways?to?Improve?Your?Programs?and?Designs</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:author???value:Scott?Meyers</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:year???value:2006</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:price???value:58.00</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">結束解析一本書...</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">開始解析一本書...</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:category???value:Web</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:title???value:Learning?XML</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:author???value:Erik?T.?Ray</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:year???value:2016</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">name:price???value:39.95</span></div><div><span style="font-size:14pt; color:windowtext; font-family:微軟雅黑">結束解析一本書...</span></div></td></tr></tbody></table>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看