您的位置:首页 > 其它

XML之sax解析

2016-06-29 10:44 375 查看
/*

xml一共有三种解析放方法

①DOM解析

②SAX解析

③Android内置的Pull解析

*/

//第一种

②SAX解析

SAX解析XML文档采用事件驱动模式。什么是事件驱动模式?

它将XML文档转换成一系列的事件,由单独的事件处理器来决定如何处理。

//新建一个工厂类SAXParserFactory
SAXParserFactory factory = SAXParserFactory.newInstance();
//让工厂类产生一个SAX的解析类SAXParser
SAXParser newSAXParser = factory.newSAXParser();
//实例化SaxHandlerBase
SaxHandlerBase saxHandlerBase = new SaxHandlerBase();
//调用解析类方法
newSAXParser.parse(getAssets().open("languages.xml"),saxHandlerBase);

List<Books> list = saxHandlerBase.getList();
for (Books books : list) {
Log.i(tag,books.toString());
}
listView.setAdapter(new ArrayAdapter<Books>(this,android.R.layout.simple_dropdown_item_1line, list));


//写一个类继承SaxHandlerBase extends DefaultHandler

/*

里面重写五个方法 注意集合数据建立一个集合的get方法方便调用

*/

@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
list=new ArrayList<Books>();
Log.i(tag,"*************开始解析文档**************");
}
@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);
name=qName;
Log.i(tag,"*************开始解析--元素**************");
if (qName.equals("item")) {

books=new Books();
books.setId(attributes.getValue("id"));
}

}

@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
String string = new String(ch, start, length);
if (!string.trim().equals("")) {
Log.i(tag,"*************开始解析--元素name"+name+"****"+"string="+string+"**********");
}

if (name.equals("name")&&!string.trim().equals("")) {
books.setName(string);
} else if (name.equals("ide")&&!string.trim().equals("")) {
books.setAuthor(string);
}

}

@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);

if (qName.equals("item")) {
list.add(books);

}
Log.i(tag,"*************结束解析--元素**************");
}

@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
Log.i(tag,"*************结束解析文档**************");

}

public List<Books> getList() {
return list;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml