xml的解析
一、总的来说分两种:
1、dom(document object model)解析:基于树形结构的节点或者片段信息来操作,需要解析整个文件,然后以节点树的形式存在于内存中。
缺点:浪费了空间和资源,不适合用于解析大文件;优点:代码简单易懂,可删除,修改,重新排列
2、sax(simple api for xml)解析:事件驱动,当文档开始,文档结束,元素开始,元素结束时发送事件,我们去编写响应事件,保存数据。
缺点:事件过后,若未保存数据则数据丢失,无状态性,事件中获取的数据无法判断出是哪个元素;优点:无需加载整个文档,
3、pull解析器:跟sax一样采用事件驱动,android的xml基本用此解析器
private void parsexml() {
// SAXParserFactory saxFactory = SAXParserFactory.newInstance();
// SAXParser saxParser;
// XMLReader reader;
// try {
// saxParser = saxFactory.newSAXParser();
// reader = saxParser.getXMLReader();
// SAXParserHelper saxParserHelper = new SAXParserHelper();
// reader.setContentHandler(saxParserHelper);
// try {
// InputStream stream = getResources().openRawResource(R.xml.parsexml);
// InputSource input = new InputSource(stream);
// reader.parse(input);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// } catch (ParserConfigurationException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (SAXException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//pull方法
// List<Map<String, String>> list = new ArrayList<Map<String, String>>();
XmlResourceParser xmlParser = getResources().getXml(R.xml.parsexml);
try {
while(xmlParser.getEventType() != XmlResourceParser.END_DOCUMENT){
if(xmlParser.getEventType() == XmlResourceParser.START_TAG){
String tagName = xmlParser.getName();
if(tagName.equals("item")){
// Map<String, String> map = new HashMap<String, String>();
String id = xmlParser.getAttributeValue(null, "id");
String url = xmlParser.getAttributeValue(1);
try {
String name = xmlParser.nextText();
Log.i("data", id + " " + url + " " + name);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
try {
xmlParser.next();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
http://www.cnblogs.com/JerryWang1991/archive/2012/02/24/2365507.html