私はLinq To XMLを使用してXML DOcumentを.NETオブジェクトにマッピングしています。xmlを渡して強く型付けされた.NETオブジェクトを取得
私はXML文書(文字列)を渡すことができる場所があるかどうかを教えてください。
私はXSD2Codeを見ていて、XML全体を渡すときに問題が発生しているので、各要素に対して別々のクラスを作成するようです。
私はLinq To XMLを使用してXML DOcumentを.NETオブジェクトにマッピングしています。xmlを渡して強く型付けされた.NETオブジェクトを取得
私はXML文書(文字列)を渡すことができる場所があるかどうかを教えてください。
私はXSD2Codeを見ていて、XML全体を渡すときに問題が発生しているので、各要素に対して別々のクラスを作成するようです。
xsd
ユーティリティを使用してください。
IIRCの場合は、xsd /c yourschema.xsd > classes.cs
とします。
スキーマを持たないXMLがある場合は、xsd
を使用してスキーマを推測することもできます。それはとにかく良い出発点でなければなりません:)
かなり簡単:
はあなたのXMLを取り、xsd.exe
コマンドラインツールを通してそれを実行します。
c:\> xsd.exe yourfile.xml
これは、対応するXMLを生成しますスキーマファイル(yourfile.xsd
)
xsd.exe
ツールをもう一度XSDファイルで実行してC#cを取得します小娘:
XmlSerializer ser = new XmlSerializer(typeof(YourClass));
var result = ser.Deserialize(new FileStream(@"D:\temp\yourfile.xml", FileMode.Open));
:
c:\> xsd.exe /c yourfile.xsd
これはちょうどC#のオブジェクトにあなたのXMLをデシリアライズ、プロジェクト内のそのクラスを使用してXMLコンテンツ
を表しyourfile.cs
でC#クラスを生成しますすべてがうまくいけば、result
にはXMLファイルの内容が1:1であるC#クラスのインスタンスが含まれるようになりました。
これだけです!
ありがとう@marc_s、私は後でどのようにXMLドキュメントを逆シリアル化し、強く型付けされた.NETオブジェクトを取得する方法です。 –
@flybyte:ステップ3 – leppie
@Myagdiタイプの安全を意味すると思います。残念ながら、 'Deserialize()'にTを返す 'XmlSerializer'はありませんので、 'object'から' T'にキャストする必要があります。私はまだ彼らが.net2のジェネリックスでそれを紹介しなかった理由を疑問に思う。 –
mbx