2011-08-12 4 views
1

私はLinq To XMLを使用してXML DOcumentを.NETオブジェクトにマッピングしています。xmlを渡して強く型付けされた.NETオブジェクトを取得

私はXML文書(文字列)を渡すことができる場所があるかどうかを教えてください。

私はXSD2Codeを見ていて、XML全体を渡すときに問題が発生しているので、各要素に対して別々のクラスを作成するようです。

答えて

0

xsdユーティリティを使用してください。

IIRCの場合は、xsd /c yourschema.xsd > classes.csとします。

スキーマを持たないXMLがある場合は、xsdを使用してスキーマを推測することもできます。それはとにかく良い出発点でなければなりません:)

1

かなり簡単:

  1. はあなたのXMLを取り、xsd.exeコマンドラインツールを通してそれを実行します。

    c:\> xsd.exe yourfile.xml 
    

    これは、対応するXMLを生成しますスキーマファイル(yourfile.xsd

  2. 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コンテンツ

  3. を表しyourfile.csでC#クラスを生成しますすべてがうまくいけば、resultにはXMLファイルの内容が1:1であるC#クラスのインスタンスが含まれるようになりました。

これだけです!

+1

ありがとう@marc_s、私は後でどのようにXMLドキュメントを逆シリアル化し、強く型付けされた.NETオブジェクトを取得する方法です。 –

+1

@flybyte:ステップ3 – leppie

+0

@Myagdiタイプの安全を意味すると思います。残念ながら、 'Deserialize()'にTを返す 'XmlSerializer 'はありませんので、 'object'から' T'にキャストする必要があります。私はまだ彼らが.net2のジェネリックスでそれを紹介しなかった理由を疑問に思う。 – mbx

関連する問題