本文实例讲解了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
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我