私は、.NET で XML を解析する立場にあります。少なくともXmlTextReaderとの間で選択できるようになりXDocumentました。これら 2 つ (またはフレームワークに含まれる他の XML パーサー) の比較はありますか?
たぶん、これは両方を深く試してみなくても決めるのに役立つかもしれません.
XML ファイルはかなり小さいと予想され、速度とメモリ使用量は、使いやすさに比べれば小さな問題です。:-)
(C# や IronPython から使用します。)
ありがとう!
私は、.NET で XML を解析する立場にあります。少なくともXmlTextReaderとの間で選択できるようになりXDocumentました。これら 2 つ (またはフレームワークに含まれる他の XML パーサー) の比較はありますか?
たぶん、これは両方を深く試してみなくても決めるのに役立つかもしれません.
XML ファイルはかなり小さいと予想され、速度とメモリ使用量は、使いやすさに比べれば小さな問題です。:-)
(C# や IronPython から使用します。)
ありがとう!
すべてをメモリに読み込むことに満足している場合は、 を使用しますXDocument。それはあなたの人生をずっと楽にしてくれます。LINQ to XML は素敵なAPI です。
基本的に、巨大なXML ファイルをストリーミング形式で処理する必要がある場合は、 XmlReader(など)を使用します。これははるかに手間のかかる API ですが、ストリーミングが可能です (つまり、必要なときにのみデータを処理するため、巨大なドキュメントを処理し、一度に少量のメモリしか使用できません)。XmlTextReader
ただし、ハイブリッド アプローチがあります。小さな要素で構成された巨大なドキュメントがある場合は、要素の先頭に位置するXElementからを作成XmlReaderし、LINQ to XML を使用して要素を処理しXmlReader、次の要素に を移動して、再開する。
XmlTextReader使用しないでください。
XmlTeam による msdn ブログから
の使用は避けてください
XmlTextReader。これには、すでに使用している既存のアプリケーションを破壊せずに修正できなかったかなりの数のバグが含まれています。
世界は動き出しましたよね?使用を避けるべき Xml API。
廃止された API は、コンパイラがそれらを識別するのに役立つので簡単ですが、使用を避けるべき API がさらに 2 つあります。つまり
XmlTextReader、 とXmlTextWriterです。これらのクラスには、既存のアプリケーションを破壊せずには修正できないバグが多数見つかりました。簡単な方法は、これらのクラスを非推奨にし、代わりに代替 API を使用するよう人々に依頼することです。残念ながら、これらの 2 つのクラスは、ECMA-335 (Common Language Infrastructure) 標準 ( http://www.ecma-international.org/publications/standards/Ecma-335.htm )の一部であるため、古いものとしてマークすることはできません– コンパニオン CLILibraryパーティション IV の一部である .xml ファイル)。幸いなことに、これらのクラスは非推奨ではありませんが、.NET Framework には既にこれらの代替 API があり、それらへの移行は比較的簡単です。
XmlTextReader最初に、 orが使用されている場所を見つける必要がありますXmlTextWriter(残念ながら、これは手動のステップです)。ここで、 のすべての出現をXmlTextReaderに置き換えXmlReader、 のすべての出現をXmlTextWriterに置き換える必要がありますXmlWriter(派生元と派生元であるため、アプリはこれらを仮パラメーターなどとして既に使用している可能性があることに注意しXmlTextReaderてXmlReaderくださいXmlTextWriter)XmlWriter。最後のステップは、XmlReader/オブジェクトがインスタンス化される方法を変更することです。リーダー/ライターを直接作成する代わりに、両方に存在XmlWriterする静的ファクトリ メソッドが必要です。.Create()XmlReaderおよびXmlWriterAPI。
さらに、Visual Studio の Intellisense はXmlTextReaderSystem.Xml 名前空間の下にリストされません。クラスは次のように定義されます。
[EditorBrowsable(EditorBrowsableState.Never)]
public class XmlTextReader : XmlReader, IXmlLineInfo, IXmlNamespaceResolver
XmlReader.Createファクトリ メソッドは、渡された設定に応じて、抽象クラスの他の内部実装を返します。XmlReader
前方のみのストリーミング API (つまり、全体をメモリにロードしない) の場合は、メソッドを介してXmlReaderを使用します。XmlReader.Create
より簡単に操作できる API については、LINQ To XMLとも呼ばれるXDocumentを使用してください。XDocumentvs XmlDocument hereとhereを見つけてください。