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 }