文章的出處為:
在android中提供了三種解析xml的方式:sax(******api xml),dom(document objrectmodel),以及android推薦的pull解析方式.下面就對三種解析方式一一詳細闡述。
假設要要解析person.xml文件
<?xml version="1.0"encoding="utf-8"?>
zhangsan
21lisi
22wangwu
222
首先介紹sax解析,
sax是事件驅動型xml解析的乙個標準介面不會改變sax的工作原理簡單地說就是對文件進行順序掃瞄,當掃瞄到文件(document)開始與結束、元素(element)開始與結束、文件(document)結束等地方時通知事件處理函式,由事件處理函式做相應動作,然後繼續同樣的掃瞄,直至文件結束。下面結合**分析
public classsaxpersonservice
public final class personpaser extendsdefaulthandler
privatelistpersons=null;
private stringtagname=null;
private personperson=null;
//遇到元素節點開始時候的處理方法
public void startelement(stringuri, string localname, string qname,
attributesattributes) throws saxexception }
//遇到文字節點時的操作
public voidcharacters(char ch, int start, int length)
throwssaxexception elseif("age".equals(tagname))}
}//遇到元素節點結束時候的操作
public void endelement(stringuri, string localname, string qname)
throwssaxexception
tagname=null;//置空已有標記,因為要解析下乙個節點了}}
至此,sax解析完畢!
下面介紹dom解析,dom,即物件文件模型,它是將整個xml文件載入記憶體(所以效率較低,不推薦使用),每乙個節點當做乙個物件,結合**分析
public class dompersonservice else if("age".equals(childelement.getnodename()))
} }
persons.add(person);//遍歷完person下的所有子節點後將person元素加入到集合中去
}return persons;
}
至此,dom解析方式結束!
下面介紹pull解析
public class pulpersonservice
if(person != null)
break;
case(xmlpullparser.end_tag)://如果遇到標籤結束
if("person".equals(parser.getname()))
break;
}eventtype=parser.next();//進入下乙個事件處理
}return persons;
}
至此,三種解析方式已經闡述完畢!
xml 解析的三種方法
dom解析 public class dompersonservice public static listreadxml inputstream instream throws exception listpersons new arraylist 例項化乙個文件構建器工廠 documentbui...
xml的三種解析方法
xml主要有三種解析方式分別為dom sax 還有xmlpull,先來說下各自的優缺點。1 dom解析的特點是將整個xml文件以樹形結構放入到記憶體中,是官方推薦標準,優點是在記憶體中可以增刪改查,缺點是當檔案過大是可能會記憶體溢位。2 sax解析是一行一行的進行解析,是程式設計師社群開發出來的,優...
Android 三種XML檔案解析方法
xml檔案 代表資料 有結構描述 1 dom解析 public listloadpersons catch exception e return list sax解析 public listloadpersons override public void endelement string uri,...