赞
踩
Pull Parser允许应用程序代码从XML数据中“拉取”事件,而不是像SAX那样通过事件处理程序被“推送”。应用程序代码可以决定何时拉取下一个事件,如开始元素、结束元素或文本内容。
import org.xmlpull.v1.XmlPullParser; | |
import org.xmlpull.v1.XmlPullParserException; | |
import java.io.StringReader; | |
public class XmlPullParserExample { | |
public void parseXml(String xmlString) throws XmlPullParserException, IOException { | |
XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); | |
factory.setNamespaceAware(true); | |
XmlPullParser xpp = factory.newPullParser(); | |
xpp.setInput(new StringReader(xmlString)); | |
int eventType = xpp.getEventType(); | |
String tagName = null; | |
while (eventType != XmlPullParser.END_DOCUMENT) { | |
switch (eventType) { | |
case XmlPullParser.START_TAG: | |
tagName = xpp.getName(); | |
// 处理开始标签 | |
break; | |
case XmlPullParser.END_TAG: | |
tagName = xpp.getName(); | |
// 处理结束标签 | |
break; | |
case XmlPullParser.TEXT: | |
// 处理文本内容 | |
break; | |
// 其他情况... | |
} | |
eventType = xpp.next(); | |
} | |
} | |
} |
SAX Parser是一个基于事件的解析器,它读取XML文档并触发一系列事件,如开始元素、结束元素和字符数据。应用程序需要实现一个ContentHandler接口来处理这些事件。
import javax.xml.parsers.SAXParser; | |
import javax.xml.parsers.SAXParserFactory; | |
import org.xml.sax.Attributes; | |
import org.xml.sax.SAXException; | |
import org.xml.sax.helpers.DefaultHandler; | |
public class SaxParserExample extends DefaultHandler { | |
@Override | |
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { | |
// 处理开始标签 | |
} | |
@Override | |
public void endElement(String uri, String localName, String qName) throws SAXException { | |
// 处理结束标签 | |
} | |
@Override | |
public void characters(char[] ch, int start, int length) throws SAXException { | |
// 处理文本内容 | |
} | |
public void parseXml(String xmlString) throws SAXException, IOException, ParserConfigurationException { | |
SAXParserFactory factory = SAXParserFactory.newInstance(); | |
SAXParser parser = factory.newSAXParser(); | |
parser.parse(new InputSource(new StringReader(xmlString)), this); | |
} | |
} |
注意:上述代码中的InputSource
类需要从javax.xml.transform.stream.InputSource
导入,并且你需要处理ParserConfigurationException
异常。同时,SAXParser
和SAXParserFactory
都位于javax.xml.parsers
包中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。