2012-02-22 9 views
0

である私は、このようなDOMパーサを使用したWeb応答を解析しようとしています:AndroidのDOM解析がtooo遅い

public static Document parseDocument(InputStream sr) throws Exception { 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    dbf.setNamespaceAware(true); 
    dbf.setIgnoringComments(true); 
    dbf.setIgnoringElementContentWhitespace(true); 
    dbf.setCoalescing(true); 
    //dbf.setValidating(false); 
    Document xdoc = dbf.newDocumentBuilder().parse(new InputSource(sr)); 
    xdoc.normalize(); 
    return xdoc; 
} 

問題が

Document xdoc = dbf.newDocumentBuilder().parse(new InputSource(sr)); 

が実行されるように3分かかることです。私のXMLファイルには3800行があります。 ノーマエーとはどのように改善するのですか?

ありがとうございます。

答えて

1

これはAndroidのDOM解析には大きすぎます。メモリ消費とオブジェクトの割り当てはポーホービーです。 SAXの前回の答えは実行可能な解決策ですが、プログラムの作成が容易であるため、Parser(アンドロイドAPIにも含まれています)はより現代的です。 (SAXパーサーはXPPの処理中にXMLイベントを処理しプッシュしますあなたのアプリケーションはパーサーを駆動してxmlイベントをストリームから取り除く)

プルダウンパーサーの上に構築された軽量データバインディングフレームワークは、ジャックソンやxstreamなどの方が良いでしょう。 xmlの解析に関することはまったくありません

+0

この回答ありがとうございます。私はどこでPull-Parserの適切な例を見つけられますか? –

+0

Google製品のみです。サンプルがあります –