0

リモート xml ファイルがあり、そこから一連の xml ノードを取得してアクティビティに表示する必要があります。1 つの方法は、完全にダウンロードしてから xpath 評価を実行し、次のようにノード セットを取得することです。

// using node I can drill further down to collect my relevant info 
NodeList names = (NodeList) xPath.evaluate("/library/artists/name", new InputSource(new FileReader(getDowloadedXMLFileLocation())), XPathConstants.NODESET);

もう 1 つの方法は、プル パーサーを使用することです。これは、nodeset を抽出するための簡単な作業を行うためのもう少し多くのコードになると思います。どちらの方法がメモリと速度の点で優れているのでしょうか?

4

2 に答える 2

1

カスタマイズされたコードと一般的なソリューションは、使いやすさと高性能の対比です。

XPath(and XLST、およびJDOMetc) は DOM のようなモデルを構築し、それを繰り返します。これにより、より多くの RAM と CPU が必要になります。XPath は簡単ですが、大きなファイルの場合は非常に遅くなる可能性があります。また、完全なファイルを手元に用意する必要があります。これは小さなファイルに使用します。

PullParser一方、ファイルの関心のある場所だけを読み取り、残りはスキップするようなものです。また、一度に 1 つのノードのみが RAM にロードされます。入力ファイルの大きさに制限はありません。また、完全に利用できるか、メディアを介してストリーミングされているかについても制限はありません。これは、大きなファイルまたはストリーミング ファイルに使用します。

于 2013-02-27T06:33:56.400 に答える
1

XML 解析のベスト プラクティスで見つけた優れた回答

XmlPullParser を使用して xml を解析することもできます。ただし、可能であれば、XML の代わりに json を使用することをお勧めします。これにより、メモリが減少し、Google はGSONでラッパー メカニズムを提供します。

リンク。

1) http://vtd-xml.sourceforge.net/

于 2013-02-27T06:21:09.140 に答える