0

次のような DOM パーサーを使用して Web 応答を解析しようとしています。

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行あります。より正常であり、これを改善する方法は?

ありがとうございました。

4

1 に答える 1

1

これは、Android での DOM 解析には大きすぎます。メモリの消費とオブジェクトの割り当ては、ポロビティブです。前の回答のようにSAXは実行可能なソリューションですが、Pull-Parser(Android APIにも含まれています)は、プログラミングが簡単であるため、より優れた最新の選択肢です(SAXパーサーを使用すると、処理を駆動し、XMLイベントをハンドラーにプッシュしますが、XPPはそうですアプリケーションがパーサーを駆動し、xml イベントをストリームから引き出します)

さらに良い選択は、プル パーサー (jackson、xstream など) の上に構築された軽量のデータ バインディング フレームワークです。それらはオブジェクトのみを配信します。xml の解析についてまったく心配する必要はありません。

于 2012-02-22T14:11:53.197 に答える