这个问题来自好友,自己也很少进行这方面的解析,只是以前在c#中用过,所以也顺便搜了一下获得如下数据:http://www.ibm.com/developerworks/cn/xml/x-saxd/
package lulusoft.jspbuilderv10.parser;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.io.*;
import org.apache.xerces.parsers.SAXParser;
import java.util.Stack;
import lulusoft.jspbuilderv10.common.*;
public class CXmlParser extends org.xml.sax.helpers.DefaultHandler{
/**私有属性*/
CXmlElement root = null;
private CharArrayWriter contents = new CharArrayWriter();
private Stack stack = null;
/**
* 功能描述:构造函数
*/
public CXmlParser(){
super();
stack = new Stack();
}
/**
* 功能描述:标签起始
*/
public void startElement( String namespaceURI,
String localName,
String qName,
Attributes attr ) throws SAXException {
contents.reset();
String cn = attr.getValue("classname");
if(cn==null || cn.trim().equals("")){
System.out.println("标签未有对应的类!请检查!");
}
CXmlElement element = CXmlElement.createElement(cn);
int size = attr.getLength() ;
for(int i=0;i<size;i++){
String name = attr.getQName(i);
String value = attr.getValue(i);
if(name.equals("classname")){
continue;
}
element.addAttribute(name,value);
}
stack.push(element);
}
/**
* 功能描述:标签结束
*/
public void endElement(String namespaceURI, String localName,
String qName ) throws SAXException {
if(stack.size() > 1){
CXmlElement element1 = (CXmlElement)stack.pop();
CXmlElement element2 = (CXmlElement)stack.pop();
if(contents.toString().trim()!= null){
element1.setElementValue(contents.toString().trim());
}
element2.addContainElement(element1);
stack.push(element2);
}
else{
root = (CXmlElement)stack.peek();
}
}
/**
* 功能描述:获得root数据包
*/
public CXmlElement getRoot(){
return root;
}
public void characters( char[] ch, int start, int length )
throws SAXException {
contents.write(ch,start,length);
}
/**
* 功能描述:解析xml并返回数据
* @param fileName String xml文件名称
* @return CXmlElement
*/
public static CXmlElement parseDocument(String fileName){
CXmlParser m_oXmlParser = new CXmlParser();
try {
XMLReader xr = new SAXParser();
xr.setContentHandler(m_oXmlParser);
xr.parse( new InputSource(new FileReader( fileName )) );
}
catch ( SAXParseException saxParseException ) {
System.out.println("Parsing Error:");
System.out.println("行:"+saxParseException.getLineNumber());
System.out.println("列:"+saxParseException.getColumnNumber());
System.out.println(" "+saxParseException.getMessage());
}
catch(SAXException saxException){
saxException.printStackTrace();
}
catch(Exception e){
e.printStackTrace();
}
return m_oXmlParser.getRoot();
}
}
原文中有上面代码的下载 我这里就不上传了 ,大家关心的还是android上面的解析吧,提供了一个例子,例子不全是我写的希望对你有用