我就直接上代码了
try{ String systemId="<?xml version=\"1.0\" encoding=\"utf-8\"?><student><name>张译成</name><age>22 </age><address>湖北省</address></student>"; SAXParserFactory factory=SAXParserFactory.newInstance(); SAXParser parser=factory.newSAXParser(); XMLReader reader=parser.getXMLReader(); reader.setContentHandler(new MyHandler(this)); byte []bb=systemId.getBytes(); ByteArrayInputStream bais=new ByteArrayInputStream(bb); InputSource in=new InputSource(bais); reader.parse(in);} catch (Exception e) { e.printStackTrace(); }
在MyHanlder中的代码是
package com.zhycheng; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import android.app.Activity; import android.widget.Toast; public class MyHandler extends DefaultHandler{ String tagname=null; Activity s=null; public MyHandler(Activity d) { this.s=d; } @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub if("age".equals(tagname)) { String s=new String(ch,start,length); Toast.makeText(this.s, s, Toast.LENGTH_SHORT).show(); } super.characters(ch, start, length); } @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub super.endDocument(); tagname=null; Toast.makeText(s, "endDocument", Toast.LENGTH_SHORT).show(); System.out.println("endDocument"); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub super.endElement(uri, localName, qName); } @Override public void startDocument() throws SAXException { // TODO Auto-generated method stub super.startDocument(); Toast.makeText(s, "startDocument", Toast.LENGTH_SHORT).show(); System.out.println("startDocument"); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub super.startElement(uri, localName, qName, attributes); tagname=localName; Toast.makeText(s, tagname, Toast.LENGTH_SHORT).show(); System.out.println(tagname); } }
这样就可以解析出来了
另外,如果要解析出标签的属性的话,可以使用下面的代码
for (int i = 0; i < attr.getLength(); i++){ System.out.println(attr.getLocalName(i) + "=" + attr.getValue(i)); }