StAX (Streaming API for XML)面向流的拉式解析XML,速度快、占用资源少,非常合适处理大数据量的xml文件。
详细教程和说明可以参见以下几篇文章:
使用 StAX 解析 XML,第 1 部分: Streaming API for XML (StAX) 简介
http://www.ibm.com/developerworks/cn/xml/x-stax1.html
使用 StAX 解析 XML,第 2 部分: 拉式解析和事件
http://www.ibm.com/developerworks/cn/xml/x-stax2.html
使用 StAX 解析 XML,第 3 部分: 使用定制事件和编写 XML
http://www.ibm.com/developerworks/cn/xml/x-stax3.html
Java6.0新特性之StAX--全面解析Java XML分析技术
http://zangweiren.iteye.com/blog/647334
Geronimo 叛逆者: 使用集成软件包:Codehaus 的 Woodstox
http://www.ibm.com/developerworks/cn/opensource/os-ag-renegade15/
本文的目的是说明Woodstox包中的StAX2应用。
Woodstox官网http://woodstox.codehaus.org/
下载woodstox-core.jar,核心包有两种开源协议apache的ASL和流行的LGPL,同时woodstox-core.jar需要stax2-api.jar的支持
stax2和stax有些不同,且对原来stax的代码不兼容
读取操作:
public XMLStreamReader2 getStreamReader(String xmlStr) throws XMLStreamException {
XMLInputFactory2 xmlif = (XMLInputFactory2) XMLInputFactory2
.newInstance();
xmlif.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES,
Boolean.FALSE);
xmlif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES,
Boolean.FALSE);
xmlif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);
xmlif.configureForSpeed();
XMLStreamReader2 xmlr = (XMLStreamReader2) xmlif.createXMLStreamReader(new BufferedReader(new StringReader(xmlStr)));
return xmlr;
}
public XMLStreamReader2 getStreamReader(InputStream is) throws XMLStreamException, IOException {
XMLInputFactory2 xmlif = (XMLInputFactory2) XMLInputFactory2
.newInstance();
xmlif.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES,
Boolean.FALSE);
xmlif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES,
Boolean.FALSE);
xmlif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);
xmlif.configureForSpeed();
XMLStreamReader2 xmlr = (XMLStreamReader2) xmlif.createXMLStreamReader(new BufferedReader(new InputStreamReader(is, "UTF-8")));
return xmlr;
}
XMLStreamReader2 xmlsr = null;
try {
xmlsr = this.getStreamReader(str);
int eventType = xmlsr.getEventType();
list = new ArrayList<OfcardMainclass>();
// 包装大类数据
OfcardMainclass classof = null;
while (xmlsr.hasNext()) {
eventType = xmlsr.next();
switch (eventType) {
case XMLEvent2.START_ELEMENT:
String name = xmlsr.getName().getLocalPart();
if (name.equals("aa"))
String s1 = xmlsr.getElementText();
if (name.equals("bb"))
String s2 = xmlsr.getAttributeValue(null, "att"));
break;
case XMLEvent2.END_ELEMENT:
if (xmlsr.getName().getLocalPart().equals(
"aa"))
break;
}
}
} finally {
if (xmlsr != null)
xmlsr.close();
}
分享到:
相关推荐
java Stax 解析xml
Stax组装及解析XML的例子。 Stax组装及解析XML的例子。
使用woodstax+jaxb进行xml的流解析,包括解析类,解析文件,所需jar包,带注解的实体类。提高了解析效率,减少了内存消耗。
kettle 解析xml数据,xml多层分组嵌套,xml stax方法,完整解析案例使用(包含xml文件以及ktr文件)。ETL大数据迁移,数据清洗。XML Input Stream (StAX) 方法
stax 以流事件的方式读取xml,可以应用与大型的xml文档的操作,使用最新的stax xml解析技术读写xml的eclipse 工程
Stax组装及解析XML的例子。Stax组装及解析XML的例子。
标签:codehaus、woodstox、stax2、api、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...
与上一个版本一起使用可以可以起到提高效率的目的。本人解析xml的真实文档
woodstox, 黄金标准 Stax XML API实现 在Github上,现在 概述黄金标准 Stax XML API实现。 在 Github 。状态 ! Maven最常见的方法是使用 Maven ( 或者 Ivy ) 从 Maven 中央存储库访问它。 这里坐标的坐标为:组 id:...
java使用stax技术操作XML文档.doc
用来解析XML文件的jar包。Streaming API for XML (StAX) 的基于事件迭代器 API 无论在性能还是在可用性上都有其他 XML 处理方法所不及的独到之处。使用前请先解压
java 解析xml 方法 sax jdom dom stAX
kettle转换xml(XML Input Stream (StAX))实例,包含xml和ktr
使用StAX进行高效的XML处理中文版 强烈推荐
标签:codehaus、woodstox、stax2、api、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
包含woodstox-core-asl-4.1.1.jar、stax2-api-3.1.1.jar、stax-api-1.0.1.jar
概述 Stax2 API是标准 API(... Stax2 API还包含许多API类的局部参考实现,下org.codehaus.stax2.ri :目的是要使它尽可能无痛的Java Stax的解析器,以实现全Stax2支持。 用法 Maven依赖项定义为: <dependency>
黄金标准的Stax XML API实现。 现在在Github。 状态 得到它! Maven 最常见的方法是使用Maven(或Ivy)从Maven Central存储库访问它。 坐标为: 群组ID: com.fasterxml.woodstox 工件ID: woodstox-core 最新...