2010-12-11 13 views
1

私は、XmlReader/XmlWriterを使用して簡単にXMLを書く方法を探しています。私は本当にインターフェイス "IXmlSerializable"を使用して好きではありませんが、私はいくつかの私のデータクラスのための選択肢を持っていない。XmlWriter/XmlReaderで複雑なオブジェクトを読み書きする方法

とにかく、私がやりたいことは非常に簡単です:

  1. が手動で私のオブジェクトを書き込むために自分自身のルーチンを書く:

    private MyClass myObject; 
    public void WriteXml(XmlWriter writer) 
    { 
        writer.WriteObject(myObject); // <-- this method doesn't exists 
    } 
    

    だから、私は周りの2作品を発見しました。 .Netはすでにそれをして以来、かなりばかげている。

  2. StringWriterを使用して新しいシリアライザを作成し、WriteValue(文字列)メソッドを使用します。

私はまだ2番目のテストしていませんが、おそらく動作すると思います(ReadValueの結果が不明)。

私の質問は次のとおりです。重要なものがないか、唯一の方法ですか?または、それを処理するより良い方法はありますか?

ありがとうございました。

+0

LINQ to XMLを見たことがありますか?それはちょっとしたことですが、治療にも役立ちます。 – Pieter

+0

ええ、私はそのアイデアは知っていますが、決して使っていません。しかしここで私の問題は、私の複雑なオブジェクトは多くのサブオブジェクトを持ち、それぞれがXmlAttributesを定義しているということです。だから私はそれらの属性を読む必要があります。私は盲目的な要素を書いてはいけません。 – Sauleil

答えて

2

遊んだ後、私はかなりシンプルなものを見つけました。

public static void WriteElement(XmlWriter writer, string name, object value) 
    { 
     var serializer = new XmlSerializer(value.GetType(), new XmlRootAttribute(name)); 
     serializer.Serialize(writer, value); 
    } 

私は問題を複雑にされた理由を私は知らないが、それはより多くすることはできません。ここで私は私が(読み取りおよび要素についても同様)私の問題を修正する方法疑問に思っている人のためにプレーしていたコードがありますそれより簡単です。

0

XmlDocumentクラスを使用してみてください。 XMLを簡単に書くための基礎としてXmlNodeを使用します。また、クラスをシリアル化したり、DataSetクラスを使用してxmlを書き出したり、データセットまたはXmlDocument型構造に読み込んだりすることもできます。

関連する問題