2009-08-28 13 views
5

.NETクラス構造(固定長レコード形式にマップされ、MQ経由で送信される)に解析する必要があるかなり大きいXMLファイルがあります。パフォーマンスは重要ですが、絶対に重要ではありません。XPathNavigatorとXmlReaderの速度の差はどれくらいですか?

ほとんどの場合、XPathNavigatorを使用すると、XMLファイルを読み取るのに、XmlReaderよりはるかに簡単です。一方、理論的には一度にノードを1つだけ読み取るので、XPathNavigatorはXPath、おそらくドキュメント全体を実行するのに十分な読み取りが必要であるため、XmlReaderXPathNavigatorより高速です。

私の質問は次のとおりです。実際のスピードはどれくらいですか?数千のノードを読むときに目立つ違いがありますか? XmlReaderに切り替える必要があるのはどこですか?または、それは常に良い選択肢であるという点までXPathNavigatorに最適化されていますか?

私のXMLの経験はほとんどが比較的小さいファイルであるため、大きなファイルを扱っている人からの入力を探しています。

答えて

5

私が知っている限り、XPathNavigatorの実装を得ることができる唯一の場所は、メモリ内のツリー全体を保持する.Xml.Linq.XDocumentまたはXPathDocumentのいずれかです。

一方、XmlReaderは、一連のノードをツリーに集める必要なく、XMLのストリームを取得して解析できます。あなたはの流れをdeserialiseしなければならなかっただろう

  1. - :

    は、したがって、あなたが前方のみの方法で、すべての必要なデータを収集すると仮定すると、その後、大規模なデータのためのXmlReaderが出ていることを単純に基づいてXPathNavigatorを実行する必要があります設定しますとにかく文書にXMLを埋め込むXML

  2. 大きなセットのアイテムをメモリにロードする必要はありません。
関連する問題