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 }

 

你可能感兴趣的:(android)