C# で cXML ドキュメントを読み書きする最良の方法は何ですか?
質問
これが漠然とした自由回答の質問であることは承知しています。何らかの大まかな方向性が得られることを期待しています。
cXML パンチアウトを ASP.NET C# サイト/アプリケーションに追加する必要があります。これは、私が何年も前に ColdFusion で書いたものを置き換えるものです。
私は C# 開発の経験はかなりありますが、XML についてはあまりやったことがありません。.NET で XML を処理するには、さまざまなオプションがたくさんあるようです。
自由回答形式の質問は次のとおりです。ファイルや文字列などの何らかの形式の XML ドキュメントがあると仮定した場合、それをコードに読み込む最良の方法は何でしょうか?データを取得してデータベースなどにクエリを実行したいと考えています。cXML ドキュメントのサイズとトラフィック量は十分に小さいため、cXML ドキュメントをメモリにロードすることは問題になりません。
したほうがいい:
1) dtd に基づいてクラスを手動で構築し、XML シリアライザーを使用しますか?
2) ツールを使用してクラスを生成します。Ariba.com からサンプル cXML ファイルをダウンロードできます。xsd.exe で xsd を生成し、次に xsd.exe /c でクラスを生成しようとしました。逆シリアル化しようとすると、一部の要素を単一の値にするか配列にするかについて「混乱」があるようで、エラーが発生します。
CodeXS オンライン ツールを試しましたが、ログにエラーが表示され、サンプル ドキュメントを逆シリアル化しようとするとエラーが発生しました。
2) データセットを作成し、ReadXml()?
3) 型付きデータセットと ReadXml()? を作成します。
4) Linq to XML を使用します。私は Linq to Objects をよく使用するので、Linq についてはよく知っていますが、この状況で Linq が何をもたらすのかを理解するのに苦労しています。
5) 他の手段。
XML 全般についての理解をさらに深める必要があると思いますが、それでも...これを行うための明らかな方法が欠けているのでしょうか?古い ColdFusion サイトで、基本的にスキーマを無視して XML を「構造」に読み取る無料のコンポーネント (「タグ」) を見つけました。この「構造」は、本質的にはコードで読みやすい一連のネストされたハッシュ テーブルです。おそらくかなりずさんだったと思いますが、うまくいきました。
C# オブジェクトから XML ファイルを生成する必要もあります。おそらく Linq to XML がそれに適しているでしょう。デフォルトの「テンプレート」ドキュメントから始めて、保存する前にそれを操作することができます。
ご指摘ありがとうございます...
解決
任意の XML を正確な形式で生成する必要がある場合は、LINQ-to-XML を使用して手動で生成する必要があります。