我就直接上代码了
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));
}