热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

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();
 }
}
<&#63;xml version="1.0" encoding="UTF-8"&#63;>

  
    mac
    12
    33
    male
    hello world
  
  
    silly
    5
    12
    female
  
  
    Mr. Jones
    2
    31
    male
  
  
    macy
    2
    40
    female
  
  
    tom
    32
    31
    male
  
  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 

XML文件

 
   
          
      YAYA 
      100 
      0 
      酷酷的雪娜瑞 
     
          
      OUOU 
      90 
      15 
      聪明的拉布拉多犬 
     
   
   
          
      QQ 
      100 
      20 
      Q仔       
         
   
 

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


推荐阅读
author-avatar
1986欠我一个拥抱_567
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有