Android备忘录,留着自用,高手勿笑:(三)XML

解析XML,Android有两种法师,SAX方式(流和事件,使用比较大的XML,比较要求性能的),DOM方式(整个文件加载并解析完毕,提供接口操作,使用小的XML,不要求性能的)。

 

代码片段:

SAX:

import javax.xml.parsers.SAXParserFactory 
import javax.xml.parsers.SAXParser 

//

SAXParserFactory factory = SAXParserFactory.newInstance(); 
SAXParser parser = factory.newSAXParser(); 
ParseXML parX = new ParseXML(); 
parser.parse("F:\\emps.xml", parX);

 

DOM:

import javax.xml.parsers.DocumentBuilderFactory 
import javax.xml.parsers.DocumentBuilder 
//
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
doc = db.parse(docFile); // get the document. 

 

我经常使用DOM,下面的例子代码:

1 InputStream kana = this._activity.getResources().getAssets().open(_fileName);
2 Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(kana);
3 Element root = doc.getDocumentElement(); //得到根节点
4 NodeList lstNodes = root.getElementsByTagName(yin).item(0).getChildNodes();
5 //
6   for(int i= 0; i< lstNodes.getLength(); i++)
7 {  //因为还有空节点,转化前注意结点的类型。
8 if(lstNodes.item(i).getNodeType() == Node.ELEMENT_NODE)
9 {
10 Element el = (Element)lstNodes.item(i);
11 KanaXml temp = new KanaXml();
12 temp.Hiragana = el.getAttribute(_hiragana);
13 temp.Katakana = el.getAttribute(_katakana);
14 temp.Romaji = el.getAttribute(_romaji);
15 temp.Sound = el.getAttribute(_sound);
16 lstXmls.add(temp);
17 }
18 }

 

posted @ 2010-10-25 17:15  香山飘雪  阅读(487)  评论(1编辑  收藏  举报