java遍历读取xml文件内容_java

本文实例讲解了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的步骤如下:

  •   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文件

<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> 

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, xml
, 遍历
读取
java遍历xml文件、java读取xml文件、java 读取xml文件内容、java读取xml配置文件、java如何读取xml文件,以便于您获取更多的相关知识。

时间: 2024-11-03 05:40:08

java遍历读取xml文件内容_java的相关文章

一个读取xml文件内容的类

xml 一个读取xml文件内容的类 package project.util.xml; import java.io.*;import java.util.*;import javax.servlet.http.*;import org.apache.log4j.*;import org.jdom.*;import org.jdom.input.*; /*** <p>Title: <font color="steelblue" size="10"&

JS通过ajax动态读取xml文件内容的方法

 这篇文章主要介绍了JS通过ajax动态读取xml文件内容的方法,实例分析了Ajax操作XML文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JS通过ajax动态读取xml文件内容的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码读取note.xml文件,并填充显示相关字段 HTML文件代码如下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3

jQuery读取XML文件内容的方法

 这篇文章主要介绍了jQuery读取XML文件内容的方法,实例分析了jQuery操作XML文件的技巧,需要的朋友可以参考下     本文实例讲述了jQuery读取XML文件内容的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.

JS通过ajax动态读取xml文件内容的方法_javascript技巧

本文实例讲述了JS通过ajax动态读取xml文件内容的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码读取note.xml文件,并填充显示相关字段 HTML文件代码如下 <!DOCTYPE html> <html> <head> <script> function loadXMLDoc(url) { var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome,

ant-Ant如何读取.xml文件内容

问题描述 Ant如何读取.xml文件内容 Ant如何读取.xml文件内容,求大神指点,谢谢!在官网看到了的信息不完整,没有能够成功读取,也可能是我写的方法有问题. 解决方案 http://my.oschina.net/Kimerchina/blog/357381

Java如何读取XML文件 具体实现_java

今天的CSDN常见问题来讲解下在Java中如何读取XML文件的内容. 直接上代码吧,注释写的很清楚了! 复制代码 代码如下: import java.io.*;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;im

java DOM4J 读取XML实例代码_java

下面展示一篇我自己写的一个XML读取测试 复制代码 代码如下: import java.util.Iterator;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import org.dom4j.*;import org.dom4j.io.SAXRe

如何读取XML文件内容

xml 下面是通过读取xml文件中的内容并显示在textbox的例子: using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.

关于Java程序读取XML文件的信息

问题描述 总是报Theprocessinginstructiontargetmatching"[xX][mM][lL]"isnotallowed.的错,不知道怎么改?求助!!!importjava.io.FileWriter;importjava.io.IOException;importjava.util.Iterator;importjava.util.List;importorg.dom4j.Document;importorg.dom4j.DocumentException;i