xml解析:Sax,Dom,pull解析
Sax
1.startDocument()文檔開(kāi)始
2.endDocument()文檔結(jié)束
3.startElement(String?namespaceURI,String?localName,String?qName,Attributes?atts);
??元素開(kāi)始,localName是元素名
1.4endElement(String?uri,?String?localName,?String?name)事件
1.5characters(char[]?ch,?int?start,?int?length)
SAXParserFactory?spf?=?SAXParserFactory.newInstance();//工廠
SAXParser?saxParser?=?spf.newSAXParser();//解析器
//XMLContextHandler?extends?DeafaultHandler
XMLContextHandler?handler?=?new?XMLContextHandler();
saxParser.parse(inStream,handler);
inStream.close();
return?handler.getPersons();
每當(dāng)遍歷到文本節(jié)點(diǎn)時(shí),會(huì)觸發(fā)該事件
public?void?characters(char[]?ch,int?start,in?length);
DOM
DocumentBuilder?builder?=?DocumentBuilderFactory.newDocumentBuilder();
Document?dom?=?builder.parse(inStream);
Element?root?=?dom.getDocumentElement();
NodeList?items?=?root.getElementsByTagName("person");//查找所有person節(jié)點(diǎn)
for(...){
Node?=?...
((Element)node).getAttribute("id");
if(node.getNodeType?==?Node.ELEMENT_NODE){
...
}
}
/*
*?取得文本節(jié)點(diǎn)
*/
node.getTextContext();
Android-Pull解析Xml
Android內(nèi)置的pull解析器解析XML文件.Pull解析器是一個(gè)開(kāi)源的java項(xiàng)目,既可以用于android,也可以用于JavaEE,如果用在javaEE需要把其jar文件放入路徑中,因?yàn)?/span>Android已經(jīng)集成進(jìn)了Pull解析器,所以無(wú)需添加任何jar文件。Android系統(tǒng)本省使用到的各種xml文件,其內(nèi)部也是采用Pull解析器進(jìn)行解析的,Pull解析器的運(yùn)行方式與SAX解析器相似。它提供了類似的時(shí)間,如:開(kāi)始元素和結(jié)束元素事件,使用parser.next()可以進(jìn)入下一個(gè)元素并觸發(fā)相應(yīng)事件。跟SAX不同的是,Pull解析器產(chǎn)生的事件是一個(gè)數(shù)字,而非方法,因此可以使用一個(gè)switch對(duì)感興趣的事件進(jìn)行處理。當(dāng)元素開(kāi)始解析時(shí),調(diào)用parser.nextText()方法可以獲取下一個(gè)Text類型節(jié)點(diǎn)的值。
XmlPullParser?parser?=?Xml.newPullParser();
parser.setInput(inStream,?"UTF-8");
int?etype?=?parser.getEventType();
while?(etype?!=?XmlPullParser.END_DOCUMENT)?{
switch?(etype)?{
case?XmlPullParser.START_DOCUMENT:
????parser.getName();
case?XmlPullParser.START_TAG:
}
etype?=?parse.next();
}
?
總結(jié)
以上是生活随笔為你收集整理的xml解析:Sax,Dom,pull解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 牦牛肉为什么那么贵?
- 下一篇: adobe media encoder下