Stax解析XML的簡單一實例,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 {//基於游標的解析方式@Testpublic 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();} }//基於迭代的解析方式@Testpublic 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();} }}