- pull
private String parseXMLwithPull(String xml) {
StringBuffer buffer = new StringBuffer();
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xmlpull = factory.newPullParser();
xmlpull.setInput(new StringReader(xml));
int eventType = xmlpull.getEventType();
String id = "";
String name = "";
String version = "";
while (eventType != XmlPullParser.END_DOCUMENT){
String nodeName = xmlpull.getName();
switch (eventType) {
case XmlPullParser.START_TAG: {
if ("id".equals(nodeName)) {
id = xmlpull.nextText();
} else if ("name".equals(nodeName)) {
name = xmlpull.nextText();
} else if ("version".equals(nodeName)) {
version = xmlpull.nextText();
}
break;
}
case XmlPullParser.END_TAG: {
if ("app".equals(nodeName)) {
buffer.append("id:" + id + "," + "name:" + name + "," + "version:" + version + ";");
}
break;
}
default:
break;
}
eventType = xmlpull.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
return buffer.toString();
}
- sax
sax主体部分
private String parseXMLwithSax(String xml) {
SAXParserFactory factory = SAXParserFactory.newInstance();
ContentHandler handler = null;
try {
XMLReader xmlReader = factory.newSAXParser().getXMLReader();
handler = new ContentHandler();
xmlReader.setContentHandler(handler);
xmlReader.parse(new InputSource(new StringReader(xml)));
} catch (SAXException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return handler.getBufferToString();
}
ContentHandler
import android.util.Log;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class ContentHandler extends DefaultHandler {
private String nodeName;
private StringBuilder id;
private StringBuilder name;
private StringBuilder version;
private StringBuffer buffer = new StringBuffer();
@Override
public void startDocument() throws SAXException {
super.startDocument();
id = new StringBuilder();
name = new StringBuilder();
version = new StringBuilder();
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
nodeName = localName;
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
if ("id".equals(nodeName)) {
id.append(ch, start, length);
} else if ("name".equals(nodeName)) {
name.append(ch, start, length);
} else if ("version".equals(nodeName)) {
version.append(ch, start, length);
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if ("app".equals(localName)) {
buffer.append("id:" + id.toString().trim() + ","
+ "name:" + name.toString().trim() + ","
+ "version:" + version.toString().trim() + ";");
id.setLength(0);
name.setLength(0);
version.setLength(0);
Log.d("contenthandler",buffer.toString());
}
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
}
public String getBufferToString() {
return buffer.toString();
}
}