<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

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

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            java語言

            java讀取解析xml文件實例

            時間:2025-02-26 12:30:52 java語言 我要投稿
            • 相關推薦

            java讀取解析xml文件實例

              如何在Java中讀取解析文件呢?下面小編為大家整理了java讀取解析xml文件實例,希望能幫到大家!

              讀取本地的xml文件,通過DOM進行解析,DOM解析的特點就是把整個xml文件裝載入內存中,形成一顆DOM樹形結構,樹結構是方便遍歷和和操縱。

              DOM解析的特性就是讀取xml文件轉換為 dom樹形結構,通過節點進行遍歷。

              這是W3c關于節點的概念

              如果xml中包含有大量的數據,由于dom一次性把xml裝入內存中的特性,所以dom不適合于包含大量數據的xml解析。當包含有大量xml的時候,用SAX進行解析比較節省內存。

              下面是一個運用DOM進行解析xml文件的例子:

              xml文件結構如下:

              <"1.0" encoding="ISO-8859-1">Giada De Laurentiis200530.00J K. Rowling200529.99James McGovern200349.99Erik T. Ray200339.95

              創建解析xml的類如下:

              package xml.dom;import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class ReadXmlFile { public static void main(String[] args) { try{  File xmlFile = new File("src/resource/book.xml");  DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();  DocumentBuilder builder = builderFactory.newDocumentBuilder();  Document doc = builder.parse(xmlFile);  doc.getDocumentElement().normalize();  System.out.println("Root element: "+doc.getDocumentElement().getNodeName());  NodeList nList = doc.getElementsByTagName("book");  for(int i = 0 ; i<nList.getLength();i++){  Node node = nList.item(i);  System.out.println("Node name: "+ node.getNodeName()); Element ele = (Element)node;  System.out.println("----------------------------"); if(node.getNodeType() == Element.ELEMENT_NODE){  System.out.println("book category: "+ ele.getAttribute("category"));  System.out.println("title name: "+ ele.getElementsByTagName("title").item(0).getTextContent());  System.out.println("author name: "+ele.getElementsByTagName("author").item(0).getTextContent());  System.out.println("year :"+ele.getElementsByTagName("year").item(0).getTextContent());  System.out.println("price : "+ele.getElementsByTagName("price").item(0).getTextContent());  System.out.println("-------------------------");   }   }

              解析結果:

              Root element: bookstoreNode name: book----------------------------book category: cookingtitle name: Everyday Italianauthor name: Giada De Laurentiisyear :2005price : 30.00-------------------------Node name: book----------------------------book category: childrentitle name: Harry Potterauthor name: J K. Rowlingyear :2005price : 29.99-------------------------Node name: book----------------------------book category: webtitle name: XQuery Kick Startauthor name: James McGovernyear :2003price : 49.99-------------------------Node name: book----------------------------book category: webtitle name: Learning XMLauthor name: Erik T. Rayyear :2003price : 39.95-------------------------

              以上是通過name獲得對應的值,

              下面利用循環節點的方式輸出:

              循環節點輸出方式的代碼如下:

              package xml.dom;import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class ReadXmlFile2 { public static void main(String[] args) { try{  File xmlFile = new File("src/resource/book.xml");  DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();  DocumentBuilder builder = builderFactory.newDocumentBuilder();  Document doc = builder.parse(xmlFile);  doc.getDocumentElement().normalize();  System.out.println("Root element: "+doc.getDocumentElement().getNodeName());   if(doc.hasChildNodes()){  printNode(doc.getChildNodes()); } }catch(Exception e){ e.printStackTrace(); } } public static void printNode(NodeList nodeList){ System.out.println("------------------------"); // System.out.println(nodeList.getLength()); for(int i = 0; i<nodeList.getLength(); i++){ Node node = (Node)nodeList.item(i);  if(node.getNodeType() == Node.ELEMENT_NODE){ System.out.println("node name: "+node.getNodeName()); System.out.println("node value: "+node.getTextContent()); if(node.hasAttributes()){ NamedNodeMap nodeMap = node.getAttributes();  for(int j = 0; j < nodeMap.getLength() ; j++){  Node nodenew = nodeMap.item(j);  System.out.println("node name "+nodenew.getNodeName()); System.out.println("node value "+nodenew.getNodeValue()); } } if(node.hasChildNodes()){ printNode(node.getChildNodes()); } } } }}

              輸出結果如下:

              Root element: bookstore------------------------node name: bookstorenode value: Everyday Italian Giada De Laurentiis 2005 30.00 Harry Potter J K. Rowling 2005 29.99 XQuery Kick Start James McGovern 2003 49.99 Learning XML Erik T. Ray 2003 39.95 ------------------------node name: booknode value: Everyday Italian Giada De Laurentiis 2005 30.00 node name categorynode value cooking------------------------node name: titlenode value: Everyday Italiannode name langnode value en------------------------node name: authornode value: Giada De Laurentiis------------------------node name: yearnode value: 2005------------------------node name: pricenode value: 30.00------------------------node name: booknode value: Harry Potter J K. Rowling 2005 29.99 node name categorynode value children------------------------node name: titlenode value: Harry Potternode name langnode value en------------------------node name: authornode value: J K. Rowling------------------------node name: yearnode value: 2005------------------------node name: pricenode value: 29.99------------------------node name: booknode value: XQuery Kick Start James McGovern 2003 49.99 node name categorynode value web------------------------node name: titlenode value: XQuery Kick Startnode name langnode value en------------------------node name: authornode value: James McGovern------------------------node name: yearnode value: 2003------------------------node name: pricenode value: 49.99------------------------node name: booknode value: Learning XML Erik T. Ray 2003 39.95 node name categorynode value webnode name covernode value paperback------------------------node name: titlenode value: Learning XMLnode name langnode value en------------------------node name: authornode value: Erik T. Ray------------------------node name: yearnode value: 2003------------------------node name: pricenode value: 39.95------------------------

              關于節點的問題:

              Giada De Laurentiis200530.00

              對于 book應用:doc.getChildNodes() 得到一個NodeList其中NodeList的長度為9

              9個節點分別如下:

              title節點

              lang節點

              Everyday節點

              author節點

              Giada De Laurentiis節點

              year節點

              2005節點

              price節點

              30.00節點

            【java讀取解析xml文件實例】相關文章:

            Java高級:怎樣讀取和處理XML的配置文件05-15

            java如何通過url讀取文件05-07

            講述java讀取properties文件的方法08-13

            Java的jar文件中讀取數據的方法04-13

            從Java的jar文件中讀取數據的方法02-21

            Java中如何高效的讀取大文件01-19

            Java如何讀取文本文件07-06

            從Java的jar文件中如何讀取數據的方法01-24

            Java中Websocket使用實例解析08-11

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

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

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院