Pull解析:
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(new StringReader(mNetworkData));
int eventType = parser.getEventType();
String id = "";
String name = "";
String position = "";
while(eventType != XmlPullParser.END_DOCUMENT){
String nodeName = parser.getName();
switch (eventType){
case XmlPullParser.START_TAG:
if("id".equals(nodeName)){
id = parser.getText();
}else if("name".equals(nodeName)){
name = parser.getText();
}else if("position".equals(nodeName)){
position = parser.getText();
}
break;
case XmlPullParser.END_TAG:
if("app".equals(nodeName)){
Log.d("lfz", "onCreate:id:"+id+",name:"+name+",position:"+position);
}
break;
default:
break;
}
eventType = parser.next();
}
Sax解析:
这是一个解析类,对应了一个类型的xml
public class MySaxParse extends DefaultHandler {
StringBuilder id;
String nodeName;
@Override
public void startDocument() throws SAXException {
super.startDocument();
id = new StringBuilder();
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
id.setLength(0);
}
@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 endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if("app".equals(nodeName)){
//xxx
}
}
@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);
}
}
}
实例化解析器
SAXParserFactory factory = SAXParserFactory.newInstance();
XMLReader reader = factory.newSAXParser().getXMLReader();
MySaxParse parse = new MySaxParse();
reader.setContentHandler(parse);
reader.parse(mData);