Stax解析XML的简单实例

关键字解释:

Stax:Streaming API for XML(用于读写XML的流接口)

xml文件代码:

<?xml version="1.0"?>
<service>
    <item>
        <task>test</task>
        <strategy>repeat</strategy>
    </item>
    <item>
        <task>WebpageRespTask</task>
        <strategy>repeat</strategy>
    </item>
</service>  

Java代码:Junit4 testcase:TestStax

package unit_test;

import java.io.InputStream;

import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.events.XMLEvent;

import org.junit.Test;

public class TestStax {
	//基于光标的解析方式
	@Test
	public void cursorBased() {
		 XMLInputFactory factory = XMLInputFactory.newInstance();
         InputStream is = null;
         is = TestStax.class.getClassLoader().getResourceAsStream("service.xml");
         XMLStreamReader  reader = null;
         try {
        	 reader = factory.createXMLStreamReader(is);

			while (reader.hasNext())
			 {
				int type = reader.next();
//				 System.out.println(reader.next());
//				 if (type==XMLStreamConstants.START_DOCUMENT||type==XMLStreamConstants.END_DOCUMENT) {
//					 System.out.println(reader..toString());
//				}
                 if(type==
						XMLStreamConstants.START_ELEMENT||type==XMLStreamConstants.END_ELEMENT){
					System.out.println(reader.getName().toString());
				}

				 else if(type==XMLStreamConstants.CHARACTERS) {
				    System.out.println(reader.getText().toString().trim());
				}
			 }
		}
         catch (XMLStreamException e) {
			e.printStackTrace();
		}
      }

	//基于迭代的解析方式
	@Test
	public void iteratorBased()
	{
		 XMLInputFactory factory = XMLInputFactory.newInstance();
         InputStream is = null;
         is = TestStax.class.getClassLoader().getResourceAsStream("service.xml");
         XMLEventReader  reader = null;
         try {
        	 reader = factory.createXMLEventReader(is);

			while (reader.hasNext())
			 {
				 XMLEvent event = reader.nextEvent();
		    		if (event.isStartElement()) {
					String name = event.asStartElement().getName().toString();
					if (name.equals("strategy")) {
						System.out.println(reader.getElementText());
					}

				}
			 }
		}
         catch (XMLStreamException e) {
			e.printStackTrace();
		}
	}
}
时间: 2024-10-15 03:57:42

Stax解析XML的简单实例的相关文章

一个java解析xml的简单例子

java解析xml,主要是通过Dom4j实现的,很多场合都会用到此功能,需要解析XML文件. 下面是一个简单的解析XML文件的例子: import java.util.Iterator; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * 解析XML文件 * * @author sunlightcs

[转载] 使用StAX解析xml

StAX 概述 从一开始,Java API for XML Processing (JAXP) 就提供了两种方法来处理 XML:文档对象模型(DOM)方法是用标准的对象模型表示 XML 文档:Simple API for XML (SAX) 方法使用应用程序提供的事件处理程序来处理 XML.JSR-173 提出了一种面向流的新方法:Streaming API for XML (StAX).其最终版本于 2004 年 3 月发布,并成为了 JAXP 1.4(将包含在即将发布的 Java 6 中)的

dom4解析xml格式文件实例

最近,一哥们在他们公司搞大数据时遇到一份比较棘手的xml文件,需要进行巧妙合理的解析,然后将数据进行封装和保存,由于文件比较大,数据比较多,格式稍微复杂一点,所以我帮他解决,刚拿到文件也觉得无从下手,因为文件中的数据格式确实有点复杂.以下给4种常见的xml文件的解析方式的分析对比: DOM DOM4J JDOM SAX 解析XML文件的几种方式和区别答: Dom解析 在内存中创建一个DOM树,该结构通常需要加载整个文档然后才能做工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的,

dom、SAX、Jdom、dom4j四种解析xml方式简单总结

1,dom和sax是java官方提供的解析方式,不需要导入额外jar包,dom甚至一种标准. dom是一次性将整个xml文件dom结构加载进内存,因此比较占空间. 优点: *形成了树结构,直观好理解,代码更易编写 *解析过程中树结构保留在内存中,方便修改 缺点: !当Xml文件过大时,对内存消耗过大,容易影响解析性能并造成内存溢出. 2,sax是一种基于事件驱动的xml解析方式.在使用是需要编写专门的handler,在文档开头会触发startDocument()方法.解析到节点除法startEl

Json解析字符串j简单实例

Json解析字符串实例,解析内容为: {"info":[{"code":"C","key":"028","nearest":"NO","value":"???"},{"code":"N","key":"0771","nearest"

Pull解析xml,小实例

1 一个示例用的xml文件:person.xml <?xml version="1.0" encoding="UTF-8"?> <persons> <person id="111"> <name>tom</name> <age>230</age> </person> <person id="222"> <name&

SAX解析xml,小实例

用的person.xml,Person.java文件同上一篇介绍Pull解析一样. 1 person.xml <?xml version="1.0" encoding="UTF-8"?> <persons> <person id="000111"> <name>tom</name> <age>230</age> </person> <person

Java中Dom解析xml的一个实例

package com.xd.test; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class test { public static void main(String[]

android pull解析xml最简单的方法

<?xml version="1.0" encoding="utf-8"?> <doc> <news> <title><![CDATA[震荡调整将成下一阶段主旋律]]></title><time><![CDATA[2015-07-15]]></time><img><![CDATA[http://i1.hexunimg.cn/2014-12-0