栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java Stax解析XML示例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java Stax解析XML示例

package org.itat.stax;

import java.io.IOException;
import java.io.InputStream;

import javax.xml.parsers.documentBuilder;
import javax.xml.parsers.documentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.stream.EventFilter;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import javax.xml.stream.events.XMLEvent;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathexpressionException;
import javax.xml.xpath.XPathFactory;

import org.junit.Test;
import org.w3c.dom.document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class TestStax {

  @Test
  public void test01() {
    XMLInputFactory factory = XMLInputFactory.newInstance();
    InputStream is = null;
    try {
      is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
      XMLStreamReader reader = factory.createXMLStreamReader(is);
      while(reader.hasNext()) {
 int type = reader.next();
 //判断节点类型是否是开始或者结束或者文本节点,之后根据情况及进行处理
 if(type==XMLStreamConstants.START_ELEMENT) {
   System.out.println(reader.getName());
 } else if(type==XMLStreamConstants.CHARACTERS) {
   System.out.println(reader.getText().trim());
 } else if(type==XMLStreamConstants.END_ELEMENT) {
   System.out.println("/"+reader.getName());
 }
      }
    } catch (XMLStreamException e) {
      e.printStackTrace();
    } finally {
      try {
 if(is!=null) is.close();
      } catch (IOException e) {
 e.printStackTrace();
      }
    }
  }
  
  @Test
  public void test02() {
    XMLInputFactory factory = XMLInputFactory.newInstance();
    InputStream is = null;
    try {
      is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
      XMLStreamReader reader = factory.createXMLStreamReader(is);
      while(reader.hasNext()) {
 int type = reader.next();
 if(type==XMLStreamConstants.START_ELEMENT) {
   String name = reader.getName().toString();
   if(name.equals("book")) {
     System.out.println(reader.getAttributeName(0)+":"+reader.getAttributevalue(0));
   }
 }
      }
    } catch (XMLStreamException e) {
      e.printStackTrace();
    } finally {
      try {
 if(is!=null) is.close();
      } catch (IOException e) {
 e.printStackTrace();
      }
    }
  }
  
  @Test
  public void test03() {
    XMLInputFactory factory = XMLInputFactory.newInstance();
    InputStream is = null;
    try {
      is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
      XMLStreamReader reader = factory.createXMLStreamReader(is);
      while(reader.hasNext()) {
 int type = reader.next();
 
 if(type==XMLStreamConstants.START_ELEMENT) {
   String name = reader.getName().toString();
   if(name.equals("title")) {
     System.out.print(reader.getElementText()+":");
   }
   if(name.equals("price")) {
     System.out.print(reader.getElementText()+"n");
   }
 }
      }
    } catch (XMLStreamException e) {
      e.printStackTrace();
    } finally {
      try {
 if(is!=null) is.close();
      } catch (IOException e) {
 e.printStackTrace();
      }
    }
  }
  
  @Test
  public void test04() {
    XMLInputFactory factory = XMLInputFactory.newInstance();
    InputStream is = null;
    try {
      is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
      //基于迭代模型的操作方式
      XMLEventReader reader = factory.createXMLEventReader(is);
      int num = 0;
      while(reader.hasNext()) {
 //通过XMLEvent来获取是否是某种节点类型
 XMLEvent event = reader.nextEvent();
 if(event.isStartElement()) {
   //通过event.asxxx转换节点
   String name = event.asStartElement().getName().toString();
   if(name.equals("title")) {
     System.out.print(reader.getElementText()+":");
   }
   if(name.equals("price")) {
     System.out.print(reader.getElementText()+"n");
   }
 }
 num++;
      }
      System.out.println(num);
    } catch (XMLStreamException e) {
      e.printStackTrace();
    } finally {
      try {
 if(is!=null) is.close();
      } catch (IOException e) {
 e.printStackTrace();
      }
    }
  }
  
  @Test
  public void test05() {
    XMLInputFactory factory = XMLInputFactory.newInstance();
    InputStream is = null;
    try {
      is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
      //基于Filter的过滤方式,可以有效的过滤掉不用进行操作的节点,效率会高一些
      XMLEventReader reader = factory.createFilteredReader(factory.createXMLEventReader(is),
   new EventFilter() {
     @Override
     public boolean accept(XMLEvent event) {
//返回true表示会显示,返回false表示不显示
if(event.isStartElement()) {
  String name = event.asStartElement().getName().toString();
  if(name.equals("title")||name.equals("price"))
    return true;
}
return false;
     }
   });
      int num = 0;
      while(reader.hasNext()) {
 //通过XMLEvent来获取是否是某种节点类型
 XMLEvent event = reader.nextEvent();
 if(event.isStartElement()) {
   //通过event.asxxx转换节点
   String name = event.asStartElement().getName().toString();
   if(name.equals("title")) {
     System.out.print(reader.getElementText()+":");
   }
   if(name.equals("price")) {
     System.out.print(reader.getElementText()+"n");
   }
 }
 num++;
      }
      System.out.println(num);
    } catch (XMLStreamException e) {
      e.printStackTrace();
    } finally {
      try {
 if(is!=null) is.close();
      } catch (IOException e) {
 e.printStackTrace();
      }
    }
  }
  
  @Test
  public void test06() {
    InputStream is = null;
    try {
      is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
      //创建文档处理对象
      documentBuilder db = documentBuilderFactory.newInstance().newdocumentBuilder();
      //通过documentBuilder创建doc的文档对象
      document doc = db.parse(is);
      //创建XPath
      XPath xpath = XPathFactory.newInstance().newXPath();
      //第一个参数就是xpath,第二参数就是文档
      NodeList list = (NodeList)xpath.evaluate("//book[@category='WEB']", doc,XPathConstants.NODESET);
      for(int i=0;i







 Everyday Italian
 Giada De Laurentiis
 2005
 30.00



 Harry Potter
 J K. Rowling
 2005
 29.99



 XQuery Kick Start
 James McGovern
 Per Bothner
 Kurt Cagle
 James Linn
 Vaidyanathan Nagarajan
 2003
 49.99



 Learning XML
 Erik T. Ray
 2003
 39.95


以上就是Java Stax解析XML示例的详细内容,更多关于Java 解析XML的资料请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/131384.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号