本文实例讲解了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的步骤如下:
用到的包:
用到的对象:
用到的方法:
下面来解析一个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>
以上就是本文的全部内容,希望对大家的学习有所帮助。
本文地址:https://www.stayed.cn/item/7904
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我