SAXParser 解析器和 XMLEventReader(读取XML文档)
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.junit.Test;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
//这个SAXParser只能按顺序进行调用不能返回重复调用函数进行解析,
public class SAXDemo{
@Test
public void demo() throws Exception {
//1.获得SAXParser的工厂类
SAXParserFactory factory=SAXParserFactory.newInstance();
//2.获得SAXParser解析器
SAXParser parse=factory.newSAXParser();
//获得XMLReader对象
XMLReader read=parse.getXMLReader();
//这里是设置监听,要覆盖原来的函数就按shif+alt+s再按V再从里面进行选择
read.setContentHandler(new DefaultHandler(){
private String elementName="";
@Override
public void startElement(String uri, String localName,
String qName, Attributes attributes) throws SAXException {
if(qName.equals("user")){
String id=attributes.getValue("id");
System.out.println("id="+id);
}
else if(qName.equals("name")||qName.equals("age")){
elementName=qName;
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if(qName.equals("name")||qName.equals("age")){
elementName="";
}
if(qName.equals("user")){
System.out.println("-------------------------");}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if(!elementName.equals("")){
String str=new String(ch,start,length);
System.out.println(elementName+":"+str);
}
}
});
read.parse("./xml/users.xml");
}
}
-----------------------------------------------------------------------------------
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import org.junit.Test;
import org.xml.sax.XMLReader;
public class STAdemo {
@Test
public void demo() throws Exception {
XMLInputFactory factory=XMLInputFactory.newInstance();
XMLEventReader read=factory.createXMLEventReader(new FileReader("./xml/users.xml"));
//这里跟SAXParser的差别在于XMLEventReader是有迭代器的它可以往上一级访问,而SAX不能只能一次惊醒访问,所以XML比SAX
//更加方便查询xml;
while(read.hasNext()){
XMLEvent en=read.nextEvent();
if(en.isStartElement()){
StartElement se=en.asStartElement();
if(se.getName().getLocalPart().equals("user")){
String id=se.getAttributeByName(new QName("id")).getValue();
System.out.println("ID="+id);
}
if(se.getName().getLocalPart().equals("name")){
Characters ch= read.nextEvent().asCharacters();
System.out.println("Name="+ch.toString());
}
if(se.getName().getLocalPart().equals("age")){
Characters chs=read.nextEvent().asCharacters();
System.out.println("age="+chs.toString());
}
}
if(en.isEndElement()){
if(en.asEndElement().getName().getLocalPart().equals("user")){
System.out.println("-------------------------");
}
}
}
}
}
SAXParser 解析器和 XMLEventReader(读取XML文档)的更多相关文章
- 【XML】利用Dom4j读取XML文档以及写入XML文档
Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...
- PHP中利用DOM和simplxml读取xml文档
实例 用DOM获取下列xml文档中所有金庸小说的书名,该xml文档所在位置为 ./books.xml: <?xml version="1.0" encoding=" ...
- java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查
一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...
- JAVA读取XML,JAVA读取XML文档,JAVA解析XML文档,JAVA与XML,XML文档解析(Document Object Model, DOM)
使用Document Object Model, DOM解析XML文档 也可参考我的新浪博客:http://blog.sina.com.cn/s/blog_43ac5543010190w3.html ...
- Java获取XML节点总结之读取XML文档节点
dom4j是Java的XML API,用来读写XML文件的.目前有很多场景中使用dom4j来读写xml的.要使用dom4j开发,需要下载导入dom4j相应的jar文件.官网下载:http://www. ...
- 读取XML文档结构并写入内容
1.在项目中新建XML文档结构.xsd文件,在其中添加相应的节点. 2.读取文档结构并写入内容 string initFileName = @"D:\Config.xml"; Da ...
- 读取XML文档存入泛型List<T>集合中
前一篇博文是<泛型List<T>转存为XML文档> http://www.cnblogs.com/insus/p/3277410.html 把一个List<T>集合 ...
- java中的xpath,读取xml文档。
1,入门 XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言. XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力.起初 X ...
- JavaScript 解析读取XML文档 实例代码(转)
JavaScript解析读取XML文件,主要就是加载并解析XML文件,然后就可以测试解析的XML文件的内容,打印输出来. 在线演示:http://demo.jb51.net/js/2012/readx ...
随机推荐
- Python和C|C++的混编(一):Python调用C、C++---Boost库
不使用boost.python库来直接构建dll的话比较繁琐,下面实例是借助boost库实现python对C.C++的调用 1 首先确定已经安装python和boost库,本例测试环境是python2 ...
- URAL1012. K-based Numbers. Version 2
链接 考查大数 正好拿来学习下JAVA JAVA好高端.. import java.io.*; import java.math.*; import java.text.*; import java. ...
- [编译] g++ 与 Makefile
g++ -c CppSoureFile -o ObjectCodeFile -c 编译而不链接 -lm 链接数学库 -static 生成静态链接的程序
- Mac常用目录
服务存放目录: ~/Library/Services/ Xcode代码片段目录 ~/Library/Developer/Xcode/UserData/CodeSnippets
- How to: Hide the Ribbon in SharePoint 2010
转:http://blogs.msdn.com/b/sharepointdev/archive/2012/04/30/how-to-hide-the-ribbon-in-sharepoint-2010 ...
- Sum It Up
http://acm.hdu.edu.cn/showproblem.php?pid=1258 Sum It Up Time Limit: 2000/1000 MS (Java/Others) M ...
- python调用系统命令 shell命令
使用python调用系统命令,基本有3种选择: 1. 使用os模块的system方法 import os os.system('ls') 2. 使用os模块的popen方法 import os os. ...
- php 图片压缩
/** * desription 判断是否gif动画 * @param sting $image_file图片路径 * @return boolean t 是 f 否 */ function chec ...
- 解决Mac下Sequel Pro 1.1 连接 Homebrew安装Mysql5.7.8的问题 Sequel Pro 1.1 encountered an unexpected error
解决Mac下Sequel Pro 1.1 连接 Homebrew安装Mysql5.7.8的问题 Sequel Pro encountered an unexpected error Sequel Pr ...
- iOS开发——Block详解
iOS开发--Block详解 1. Block是什么 代码块 匿名函数 闭包--能够读取其他函数内部变量的函数 函数变量 实现基于指针和函数指针 实现回调的机制 Block是一个非常有特色的语法,它可 ...