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>





转载于:https://my.oschina.net/phoebus789/blog/604178

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值