質問

.Netフレームワークには、Xml文字列を読み取るための(少なくとも)4つの異なる方法があります。 XmlDocument、XmlReader、XPath、およびXElementをそれぞれ使用しましたが、コーディング時または実行中に使用するのに最も効率的なのはどれですか?それぞれが異なるタスクのために設計されていますか、長所と短所は何ですか?


更新: XmlReaderを使用することは、xmlを読み取る最も速い方法であるように思えますが、これは妥当なように思えますが、制限があります。 XmlDocumentとXLinqの間に、XMLに非順次アクセスする場合のパフォーマンスの違いがあるかどうかを知りたい。


更新: xmlドキュメントをロードするさまざまな方法を比較した投稿をいくつか見つけました。 XmlReaderは最速です。XmlDocumentとLINQ to XMLには、LINQ to XMLが前面に出る10,000以上のノードを持つドキュメントをロードするまで、わずかな違いがあります。

役に立ちましたか?

解決

読む最も一般的な3つの方法は次のとおりです。

XmlDocument XPathを使用して、またはすべてのノードを参照してアクセスできるツリー構造でファイル全体を読み取ります。 XML構造全体をメモリにロードする必要があるため、非常に大きなファイルには大量のメモリが必要です。小さいファイル(数メガバイト未満)に非常に優れたシンプルな使用方法。

XmlReader 速いですが、シーケンシャルなので使用するのも大変です。戻る必要がある場合、それは不可能であり、XML構造は通常、秩序が乱れている傾向があります。また、XMLの非終了ストリームから読み取る場合、これがおそらく唯一の方法です。

XMLシリアライザー これは基本的にすべてを行い、モデルのルートオブジェクトを提供し、XMLを作成して読み取ります。ただし、構造をほとんど制御することはできず、オブジェクトの古いバージョンを読むのは苦痛です。したがって、これは永続化にはあまりうまくいきません。

XDocumentおよびLINQ to XML ダニエル・ストレートが指摘したように。しかし、コメントするほどそれを知りません。投稿を編集し、不足している情報を追加するよう、誰にでも招待します。


今、書くことは別の話です。 XmlDocumentを維持するのは苦痛であり、XmlWriterは簡単に使用できます。

私の経験から言うと、最善の組み合わせはXmlWriterを使用して書き込み、XmlDocumentを使用して読み取ることです。

他のヒント

XDocumentとLINQ to XMLもありますが、プログラマの時間に関しては、これがはるかに効率的であると考えています。

最速のものは XmlTextReader です。 MSDNから:

  

"高速で、キャッシュされていない、前方のみを提供するリーダーを表します   XMLデータへのアクセス。"

詳細: XmlTextReaderクラス

実際には、どの「方法」を決定するかは問題に依存しますが、使用に最も適しています。 XMLファイルを1回だけ読み込む必要がある場合(例:グローバルアプリ設定の読み込みとキャッシュなど)、XmlTextReaderが勝者です。しかし、覚えておいてください、それは前方のみのリーダーです。 XML全体を検索/変更する必要がある場合は、おそらく XmlDocumentクラス

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top