本文实例讲解了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();
}
}
mac 12 33male hello world silly 5 12female Mr. Jones 2 31male macy 2 40female tom 32 31male hello 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 < 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文件
YAYA 100 0 酷酷的雪娜瑞 OUOU 90 15 聪明的拉布拉多犬 100 20 Q仔
以上就是本文的全部内容,希望对大家的学习有所帮助。



