2009-05-27 14 views
2

私は以前はXML解析を行ってきましたが、大規模ではありませんでした。 私はこのフォーマットに似た多くの文書で働いている場合:.NETでの速度とXMLの解析 - 直列化とXML DOMの比較

<?xml version="1.0" ?> 
<items comment="something..."> 
    <uid>6523453</uid> 
    <uid>94593453</uid> 
</items> 

これらの文書を解析するための最速の方法は何ですか?
1)XML DOM
2)は、XMLシリアル化 - .NETオブジェクト
3に再水和)いくつかの他の方法

UPDATE
私は、平均で約8000 uidの要素があるだろうことを言及するのを忘れてしまいました。

答えて

2

XmlReaderを使用することは間違いなく最も簡単な方法ですが、手動ですべての解析を手動で行う必要があります。キャッシングなしで直接ストリームから読み込みますが、DOMと比較して使用するのはあまり便利ではありません。

あなたが示唆した2つを比較してください:シリアル化は、メモリ内のツリー全体をキャッシュしないので、DOMを使用するよりも素早く行うべきです - あなたが具体的であればシリアライゼーションを行うことを目指しています。

2

私は、Xmlシリアル化が両方の世界の中で最高のものだと言います。あなたは使いやすさとスピードの良さを得ることができます。 xmlシリアル化ではさらにオーバーヘッドが発生しますが、手動でXmlReaderを使用した場合は、そのリーダーを使用してオブジェクトグラフを再作成するときに、少なくともオーバーヘッドを超えないようにレプリケートします。

1

データの処理に応じて、@ Noldorinに記載されているXmlReaderがストリーミングスタイルの処理に最適です。 XPathを使用してデータへのアドホックなスタイルのアクセスが必要な場合、XPathDocumentは生のXMLドキュメントよりもはるかに高速です。

http://msdn.microsoft.com/en-us/library/eh3exdc4.aspx

+2

これが本当の答えである:それは依存しています。それはデータで何をしたいかによって異なります。 XPathクエリ、XSLトランスフォームなどのような "XML"のことをしているなら、XmlReaderが必要になります。データをオブジェクトとして操作する必要がある場合は、シリアル化を使用します。 –