欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java遍歷讀取xml文件內(nèi)容

 更新時間:2016年01月19日 08:47:48   作者:lry77  
這篇文章主要為大家介紹了java遍歷讀取xml文件內(nèi)容,感興趣的小伙伴們可以參考一下

本文實例講解了java遍歷讀取xml文件內(nèi)容的詳細代碼,分享給大家供大家參考,具體內(nèi)容如下

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節(jié)點,doc節(jié)點會和下面的root節(jié)點合并
    OMDocument dod = factory.createOMDocument();
    
    //建立root節(jié)點
    OMElement root = factory.createOMElement("root","","");
    OMElement add = factory.createOMElement("dabi","","");
    //建立兩個普通節(jié)點
    OMElement stu = factory.createOMElement("student","","");
    stu.addChild(factory.createOMText("mac"));
 
    OMElement tea = factory.createOMElement("teacher","","");
    tea.addChild(factory.createOMText("silly"));
    
    //構(gòu)建樹,將兩個普通節(jié)點連到root節(jié)點上
    root.addChild(stu);
    root.addChild(tea);
    //構(gòu)建樹,將root節(jié)點連到doc節(jié)點上
    dod.addChild(root);
    
    // 構(gòu)建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.創(chuàng)建DocumentBuilder工廠
  •   2.創(chuàng)建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:創(chuàng)建DocumentBuilder的抽象工廠
  • DocumentBuilder:可以從 XML 獲取一個 Document
  • Document:提供供對文檔數(shù)據(jù)的基本訪問

用到的方法:

  • DocumentBuilder.parse(String)':將給定 URI 的內(nèi)容解析為一個 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節(jié)點"); 
      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> 

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助。

相關(guān)文章

  • Java仿淘寶首頁分類列表功能的示例代碼

    Java仿淘寶首頁分類列表功能的示例代碼

    這篇文章主要介紹了仿淘寶分類管理功能的示例代碼,具有很好的參考價值,希望對大家有所幫助,也給大家做個參考
    2018-05-05
  • JavaWeb實現(xiàn)用戶登錄注冊功能實例代碼(基于Servlet+JSP+JavaBean模式)

    JavaWeb實現(xiàn)用戶登錄注冊功能實例代碼(基于Servlet+JSP+JavaBean模式)

    這篇文章主要基于Servlet+JSP+JavaBean開發(fā)模式實現(xiàn)JavaWeb用戶登錄注冊功能實例代碼,非常實用,本文介紹的非常詳細,具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-05-05
  • Java設(shè)計模式之java命令模式詳解

    Java設(shè)計模式之java命令模式詳解

    這篇文章主要介紹了Java設(shè)計模式編程中命令模式的使用,在一些處理請求響應的場合經(jīng)??梢杂玫矫钅J降木幊趟悸?需要的朋友可以參考下
    2021-09-09
  • 全面解析java中的hashtable

    全面解析java中的hashtable

    以下是對java中的hashtable進行了詳細的分析介紹。需要的朋友可以過來參考下
    2013-08-08
  • 深入了解與實例應用pinyin4j庫

    深入了解與實例應用pinyin4j庫

    在Java開發(fā)中,pinyin4j庫是處理漢字與拼音轉(zhuǎn)換的重要工具,提供將漢字轉(zhuǎn)換為全拼音和提取漢字首字母的核心功能,本文詳細探討了pinyin4j庫的使用方法、核心功能和實例應用,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • springboot中JSONObject遍歷并替換部分json值

    springboot中JSONObject遍歷并替換部分json值

    這篇文章主要介紹了springboot中JSONObject遍歷并替換部分json值,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • SpringBoot中使用異步線程導致Request請求頭丟失問題的解決方法

    SpringBoot中使用異步線程導致Request請求頭丟失問題的解決方法

    異步線程請求頭丟失的問題通常發(fā)生在多線程環(huán)境中,特別是在使用 CompletableFuture 或其他異步編程模型時,本文給大家詳細介紹了SpringBoot中使用異步線程導致Request請求頭丟失問題的原因和解決方法,需要的朋友可以參考下
    2025-07-07
  • 關(guān)于java.math.BigDecimal比較大小問題

    關(guān)于java.math.BigDecimal比較大小問題

    這篇文章主要介紹了關(guān)于java.math.BigDecimal比較大小問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Intellij Idea新建SpringBoot項目方式

    Intellij Idea新建SpringBoot項目方式

    這篇文章主要介紹了Intellij Idea新建SpringBoot項目方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • Java對象序列化操作詳解

    Java對象序列化操作詳解

    這篇文章主要介紹了Java對象序列化操作,簡單描述了Java序列化相關(guān)概念、原理并結(jié)合實例形式總結(jié)分析了常見序列化操作相關(guān)定于與使用技巧,需要的朋友可以參考下
    2018-09-09

最新評論