关键字解释:
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();
}
}
}
原文:http://blog.csdn.net/wwhrestarting/article/details/45366173