Stax用法示例
来源:互联网 发布:java socket断点续传 编辑:程序博客网 时间:2024/06/05 16:15
package cn.hncu.jaxp.stax;
import java.io.FileReader;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
public class StAXDemo {
/*
* 本例是Stax解析技术演示,需求同SaxDemo.demo2()
*/
public static void main(String[] args) throws Exception {
XMLInputFactory factory = XMLInputFactory.newFactory();
XMLEventReader reader = factory.createXMLEventReader(new FileReader("./xml/users.xml"));
//reader是一个迭代器,类似我们之前一直用的sc ----Scanner把流封装成迭代器
//reader迭代器中的每一个元素都是一个XMLEvent对象
while(reader.hasNext()){
XMLEvent xe = reader.nextEvent();
if(xe.isStartElement()){
StartElement se = xe.asStartElement();
if(se.getName().getLocalPart().equals("user")){
//读取属性值
String id = se.getAttributeByName(new QName("id") ).getValue();
System.out.println("id:"+id);
}else if(se.getName().getLocalPart().equals("name")){
//读取文本内容
Characters chs = reader.nextEvent().asCharacters(); //文本内容 是 StartElement的下一个事件对象
System.out.println("name:"+chs.getData());
}else if(se.getName().getLocalPart().equals("age")){
//读取文本内容
Characters chs = reader.nextEvent().asCharacters(); //文本内容 是 StartElement的下一个事件对象
System.out.println("age:"+chs.getData());
}
}
if(xe.isEndElement()){
EndElement ee = xe.asEndElement();
if(ee.getName().getLocalPart().equals("user")){
System.out.println("-----------------");
}
}
}
}
import java.io.FileReader;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
public class StAXDemo {
/*
* 本例是Stax解析技术演示,需求同SaxDemo.demo2()
*/
public static void main(String[] args) throws Exception {
XMLInputFactory factory = XMLInputFactory.newFactory();
XMLEventReader reader = factory.createXMLEventReader(new FileReader("./xml/users.xml"));
//reader是一个迭代器,类似我们之前一直用的sc ----Scanner把流封装成迭代器
//reader迭代器中的每一个元素都是一个XMLEvent对象
while(reader.hasNext()){
XMLEvent xe = reader.nextEvent();
if(xe.isStartElement()){
StartElement se = xe.asStartElement();
if(se.getName().getLocalPart().equals("user")){
//读取属性值
String id = se.getAttributeByName(new QName("id") ).getValue();
System.out.println("id:"+id);
}else if(se.getName().getLocalPart().equals("name")){
//读取文本内容
Characters chs = reader.nextEvent().asCharacters(); //文本内容 是 StartElement的下一个事件对象
System.out.println("name:"+chs.getData());
}else if(se.getName().getLocalPart().equals("age")){
//读取文本内容
Characters chs = reader.nextEvent().asCharacters(); //文本内容 是 StartElement的下一个事件对象
System.out.println("age:"+chs.getData());
}
}
if(xe.isEndElement()){
EndElement ee = xe.asEndElement();
if(ee.getName().getLocalPart().equals("user")){
System.out.println("-----------------");
}
}
}
}
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?><users>
<user id="A001">
<name>Jack</name>
<age>22</age>
</user>
<user id="A002">
<name>张三</name>
<age>24</age>
</user>
<user id="B001">
<name>小李</name>
<age>20</age>
</user>
<user id="B002">
<name>小张</name>
<age>28</age>
</user>
<user id="C001">
<name>刘备</name>
<age>45</age>
</user>
</users>
//结果演示
阅读全文
0 0
- Stax用法示例
- XML - StAX示例
- StAX
- stax
- 理解StAX
- 什么是stax
- StAX杂谈
- XML-----StAX
- STAX解析
- 拓展STAX
- SetTimeOut方法用法示例
- JTable用法示例
- JTree用法示例
- HashMap用法 示例
- TreeMap用法 示例
- SetTimeOut方法用法示例
- sscanf用法示例
- HashMap用法 示例
- Django 改为用pymysql方法
- P3329 [ZJOI2011]最小割
- 设计模式--适配器模式(简要)(四)
- 字符串回文判断(palindrome)
- 相关控制
- Stax用法示例
- JSP<1.1>
- 函数默认参数
- MyBatis配置C3P0连接池
- Android双击返回键退出程序的实现方法
- 舞步学院PUA就是个坑,大家千万不要信(真事)
- 服务一带一路-逐浪CMS软件团队物联网研发成果显赫
- Android线程—多线程编程核心技术
- Linux环境下装OpenCV3 缺少ippicv问题、CMake的用法