java遍历读取xml文件内容

这篇文章主要为大家介绍了java遍历读取xml文件内容,感兴趣的小伙伴们可以参考一下

本文实例讲解了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();   //  读到 OMElement cre = doc.getFirstChildWithName(new QName("student")); //读到 OMElement cre1 = cre.getFirstChildWithName(new QName("id")); //  读到 System.out.println(cre1.getLocalName()+":"+cre1.getText()); cre1 = cre.getFirstChildWithName(new QName("name"));    //  读到 System.out.println(cre1.getLocalName()+":"+cre1.getText()); cre1 = cre.getFirstChildWithName(new QName("age"));   //  读到 System.out.println(cre1.getLocalName()+":"+cre1.getText()); cre1 = cre.getFirstChildWithName(new QName("sex"));   //  读到 System.out.println(cre1.getLocalName()+":"+cre1.getText()); cre1 = cre.getFirstChildWithName(new QName("message"));   //  读到 System.out.println(cre1.getLocalName()+":"+cre1.getText()); System.out.println("------------------------------1"); Iterator 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 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 ite1 = all.getChildElements(); while(ite1.hasNext()){ OMElement temp = ite1.next(); if(temp.getLocalName().equals("student")){ Iterator 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 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(); } }
    mac1233malehello world silly512female Mr. Jones231male macy240female tom3231malehello world

再分享一例: 用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 

XML文件

    YAYA1000酷酷的雪娜瑞 OUOU9015聪明的拉布拉多犬  QQ10020Q仔

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上就是java遍历读取xml文件内容的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java