关键字解释:
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