解析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 }

 

相关文章:

  • 2021-09-29
  • 2022-12-23
  • 2022-12-23
  • 2021-09-15
  • 2021-09-06
  • 2022-12-23
  • 2021-05-25
  • 2021-12-08
猜你喜欢
  • 2022-01-15
  • 2022-01-19
  • 2021-09-25
  • 2021-11-21
  • 2021-06-10
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案