java遍曆讀取xml檔案內容_java

來源:互聯網
上載者:User

本文執行個體講解了java遍曆讀取xml檔案內容的詳細代碼,分享給大家供大家參考,具體內容如下

package test; import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.Iterator; import javax.xml.namespace.NamespaceContext;import javax.xml.namespace.QName;import javax.xml.stream.XMLInputFactory;import javax.xml.stream.XMLOutputFactory;import javax.xml.stream.XMLStreamException;import javax.xml.stream.XMLStreamReader;import javax.xml.stream.XMLStreamWriter; import org.apache.axiom.om.OMAbstractFactory;import org.apache.axiom.om.OMAttribute;import org.apache.axiom.om.OMComment;import org.apache.axiom.om.OMContainer;import org.apache.axiom.om.OMDataSource;import org.apache.axiom.om.OMDocType;import org.apache.axiom.om.OMDocument;import org.apache.axiom.om.OMElement;import org.apache.axiom.om.OMException;import org.apache.axiom.om.OMFactory;import org.apache.axiom.om.OMNamespace;import org.apache.axiom.om.OMProcessingInstruction;import org.apache.axiom.om.OMSourcedElement;import org.apache.axiom.om.OMText;import org.apache.axiom.om.OMXMLParserWrapper;import org.apache.axiom.om.impl.builder.StAXOMBuilder;import org.xml.sax.helpers.XMLReaderFactory; public class Axiomtest { public static void main(String[] args) throws FileNotFoundException, Throwable {//  read xml    FileInputStream xmlFile = new FileInputStream("line-item2.xml");    XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(xmlFile);     // 還需要StAXOMBuilder對象    StAXOMBuilder builder = new StAXOMBuilder(parser);        OMElement doc = builder.getDocumentElement();   //  讀到<fool></fool>            OMElement cre = doc.getFirstChildWithName(new QName("student")); //讀到<student>        OMElement cre1 = cre.getFirstChildWithName(new QName("id")); //  讀到<id></id>    System.out.println(cre1.getLocalName()+":"+cre1.getText());    cre1 = cre.getFirstChildWithName(new QName("name"));    //  讀到<name></name>    System.out.println(cre1.getLocalName()+":"+cre1.getText());        cre1 = cre.getFirstChildWithName(new QName("age"));   //  讀到<age></age>    System.out.println(cre1.getLocalName()+":"+cre1.getText());          cre1 = cre.getFirstChildWithName(new QName("sex"));   //  讀到<sex></sex>    System.out.println(cre1.getLocalName()+":"+cre1.getText());        cre1 = cre.getFirstChildWithName(new QName("message"));   //  讀到<sex></sex>    System.out.println(cre1.getLocalName()+":"+cre1.getText());        System.out.println("------------------------------1");    Iterator<OMElement> iter = doc.getChildElements();    while(iter.hasNext()){      OMElement temp = iter.next();      System.out.println("====================");      System.out.println(temp.getLocalName());//      System.out.println(temp.getText());       if(temp.getLocalName().equals("student")){        Iterator<OMElement> iter1 = temp.getChildElements();        System.out.println("----------------");        while(iter1.hasNext()){          OMElement temp1 = iter1.next();                    System.out.println(temp1.getLocalName()+":"+temp1.getText());        }      }    }    System.out.println("!!!!!!!!!!!!!");    FileInputStream file = new FileInputStream("line-item2.xml");    XMLStreamReader read = XMLInputFactory.newInstance().createXMLStreamReader(file);    StAXOMBuilder sta = new StAXOMBuilder(read);    OMElement all = sta.getDocumentElement();    Iterator<OMElement> ite1 = all.getChildElements();    while(ite1.hasNext()){      OMElement temp = ite1.next();      if(temp.getLocalName().equals("student")){       Iterator<OMElement> ite2 = temp.getChildElements();       while(ite2.hasNext()){         OMElement temp1 = ite2.next();         System.out.println(temp1.getLocalName()+":"+temp1.getText());      }         }   }    //    write xml        OMFactory factory = OMAbstractFactory.getOMFactory();        //建立doc節點,doc節點會和下面的root節點合并    OMDocument dod = factory.createOMDocument();        //建立root節點    OMElement root = factory.createOMElement("root","","");    OMElement add = factory.createOMElement("dabi","","");    //建立兩個普通節點    OMElement stu = factory.createOMElement("student","","");    stu.addChild(factory.createOMText("mac"));     OMElement tea = factory.createOMElement("teacher","","");    tea.addChild(factory.createOMText("silly"));        //構建樹,將兩個普通節點連到root節點上    root.addChild(stu);    root.addChild(tea);    //構建樹,將root節點連到doc節點上    dod.addChild(root);        // 構建writer做輸出器    XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(        new FileOutputStream("2.xml"));    root.serialize(writer); // cache on    writer.flush();        FileInputStream xmlFile1 = new FileInputStream("2.xml");    XMLStreamReader parser1 = XMLInputFactory.newInstance().createXMLStreamReader(xmlFile1);        StAXOMBuilder builder1 = new StAXOMBuilder(parser1);    OMElement doc1 = builder1.getDocumentElement();        Iterator<OMElement> iter1 = doc1.getChildElements();    while(iter1.hasNext()){      OMElement temp = iter1.next();      System.out.println("====================");      System.out.println(temp.getLocalName()+":"+temp.getText());    }         System.out.println("!!!!!!!!");     OMFactory omf = OMAbstractFactory.getOMFactory();//    OMDocument od = omf.createOMDocument();    OMElement root1 = omf.createOMElement("root","","");    OMElement name = omf.createOMElement("name","","");    OMElement sex = omf.createOMElement("sexy","","");    sex.addChild(omf.createOMText("man"));    name.addChild(omf.createOMText("dabi"));    root1.addChild(sex);    root1.addChild(name);//    od.addChild(root1);        XMLStreamWriter xmlw = XMLOutputFactory.newInstance().createXMLStreamWriter(new FileOutputStream("3.xml"));    root1.serialize(xmlw);        xmlw.flush(); }}
<?xml version="1.0" encoding="UTF-8"?><fool>  <student>    <name>mac</name>    <id>12</id>    <age>33</age>    <sex>male</sex>    <message>hello world</message>  </student>  <student>    <name>silly</name>    <id>5</id>    <age>12</age>    <sex>female</sex>  </student>  <teacher>    <name>Mr. Jones</name>    <id>2</id>    <age>31</age>    <sex>male</sex>  </teacher>  <student>    <name>macy</name>    <id>2</id>    <age>40</age>    <sex>female</sex>  </student>  <student>    <name>tom</name>    <id>32</id>    <age>31</age>    <sex>male</sex>  </student>  <message>hello world</message></fool>

再分享一例: 用JAVA讀取XML檔案

解析XML的步驟如下:

  •   1.建立DocumentBuilder工廠
  •   2.建立DocumentBuilder對象
  •   3.DocumentBuilder對象的parse方法得到Document對象
  •   4.Document對象的getElementsByTagName得到NodeList集合
  •   5.通過getFirstChild和getNextSibling進行遍曆 

用到的包:

  • import javax.xml.parsers.*;
  • import org.w3c.dom.*;
  • import org.xml.sax.*;

用到的對象:

  • DocumentBuilderFactory:建立DocumentBuilder的抽象工廠
  • DocumentBuilder:可以從 XML 擷取一個 Document
  • Document:提供供對文檔資料的基本訪問

用到的方法:

  • DocumentBuilder.parse(String)':將給定 URI 的內容解析為一個 XML 文檔,並且返回一個新的 DOM Document對象
  • Document.getElementsByTagName(String)':返回具有給定標記名稱的所有 Element 的 NodeList
  • Element.getAttribute(String)':通過名稱獲得屬性值

下面來解析一個XML檔案

import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.*;  public class Test {   public static void main(String[] args)   {     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();     try     {       DocumentBuilder db = dbf.newDocumentBuilder();       Document doc = db.parse("pet2.xml");        NodeList dogList = doc.getElementsByTagName("dog");       System.out.println("共有" + dogList.getLength() + "個dog節點");       for (int i = 0; i < dogList.getLength(); i++)       {         Node dog = dogList.item(i);         Element elem = (Element) dog;         System.out.println("id:" + elem.getAttribute("id"));         for (Node node = dog.getFirstChild(); node != null; node = node.getNextSibling())         {           if (node.getNodeType() == Node.ELEMENT_NODE)           {             String name = node.getNodeName();             String value = node.getFirstChild().getNodeValue();             System.out.print(name + ":" + value + "\t");           }         }         System.out.println();       }     }     catch (Exception e)     {       e.printStackTrace();     }   } } 

XML檔案

<pets>   <dogs>     <dog id="1">            <name>YAYA</name>       <health>100</health>       <love>0</love>       <strain>酷酷的雪娜瑞</strain>     </dog>     <dog id="2">            <name>OUOU</name>       <health>90</health>       <love>15</love>       <strain>聰明的拉布拉多犬</strain>     </dog>   </dogs>   <penguins>     <penguin id="3">            <name>QQ</name>       <health>100</health>       <love>20</love>       <sex>Q仔</sex>           </penguin>       </penguins> </pets> 

以上就是本文的全部內容,希望對大家的學習有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.