任何人都可以指出我的解釋或向我解釋如何輕鬆地解析XML並僅使用Android操作系統庫獲取w3c.Document的值?在Android上解析XML(org.w3c.Document)的方法
我試着使用dom4j中的實現,但它是非常緩慢:-(
任何人都可以指出我的解釋或向我解釋如何輕鬆地解析XML並僅使用Android操作系統庫獲取w3c.Document的值?在Android上解析XML(org.w3c.Document)的方法
我試着使用dom4j中的實現,但它是非常緩慢:-(
你應該明確地使用SAX API所提供。Android的XML解析API堆在普通的Java SAX一個的頂部,這樣在我我認爲我只是使用普通的Java SAX API,這樣你就可以像普通的Java桌面項目一樣測試你的代碼。
XML解析總是很慢,使用這些SAX解析器是一樣好(除非你從零開始寫一個自定義分析器) 建議的話:儘量減少字符串比較,嘗試使用hashmaps而不是if(token.isEqual(CONSTANT_TOKEN))的長鏈);
以下是Java的XML解析的幾個例子:http://java.sun.com/developer/codesamples/xml.html#sax
Android的XML API是聲明,範式是不同了一點,所以如果你決定與準備,準備讀了幾個例子,瞭解它的方法。
最後,也許在2個月前,我看到了一個基於DOM和SAX與Android XML API的圖表比較(我現在還找不到鏈接)。得出的結論是,DOM是最慢的,SAX是最高的,但對Android的XML實現沒有太大的限制。
這是article at Developer.com比較Android上的DOM,SAX和Pull解析器的性能。它發現DOM解析器是最慢的,然後Pull解析器和SAX解析器是他們測試中速度最快的。
如果您要在應用程序中進行大量解析,可能需要對不同選項進行基準測試,以查看哪種解決方案最適合您。
我已使用XmlPullParser
通過XmlResourceParser
,發現運行良好,易於使用。
它通過XML返回事件,告訴你它在那裏發現了什麼。
如果你使用它,你的代碼將是這個樣子:
XmlResourceParser parser = context.getResources().getXml(R.xml.myfile);
try {
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String name = null;
switch (eventType){
case XmlPullParser.START_TAG:
name = parser.getName().toLowerCase();
if (name.equals(SOME_TAG)) {
for (int i = 0;i < parser.getAttributeCount();i++) {
String attribute = parser.getAttributeName(i).toLowerCase();
if (attribute.equals("myattribute")) {
String value = parser.getAttributeValue(i);
}
}
}
break;
case XmlPullParser.END_TAG:
name = parser.getName();
break;
}
eventType = parser.next();
}
}
catch (XmlPullParserException e) {
throw new RuntimeException("Cannot parse XML");
}
catch (IOException e) {
throw new RuntimeException("Cannot parse XML");
}
finally {
parser.close();
}
如果你想解析XML,這不是從一個資源文件,你可以使用XmlPullParserFactory
class創建一個新的XmlPullParser
然後調用setInput()
method 。
我們也可以使用的XPath在Android的XML解析東西..
它是有用的,當你要來分析大量的數據在陣列的形式。
查看此Link for XPath Tutorial從Android解析XML內容。
享受!
您好ruibm它對我也有用..你可以顯示如何使用hashmaps而不是長鏈條的條件... – Dinash 2011-05-02 10:54:48