码迷,mamicode.com
首页 > 其他好文 > 详细

Stax解析XML的简单实例

时间:2015-04-29 15:07:35      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

关键字解释:

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();
		}      
	}
} 



Stax解析XML的简单实例

标签:

原文地址:http://blog.csdn.net/wwhrestarting/article/details/45366173

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!