2

私はXmlReader/XmlWriterを使用してXMLを書く簡単な方法を見つけようとしてきました。インターフェイス「IXmlSerializable」を使用するのはあまり好きではありませんが、一部のデータクラスを選択することはできません。

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

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

だから、私は2つの回避策を見つけました:

  1. オブジェクトを手動で作成するための独自のルーチンを作成します。.Netがすでにそれを行っているので、かなりばかげています。
  2. StringWriterを使用して新しいシリアライザーを作成し、WriteValue(string)メソッドを使用します。

2番目のテストはまだ行っていませんが、おそらく機能すると思います(ReadValueの結果のためにわかりません)。

それから私の質問は:私は何か重要なものを見逃しているのか、それともそれが唯一の方法なのか?それとも、それを処理するためのより良い方法はありますか?

ありがとう。

4

2 に答える 2

5

遊んだ後、私は非常に単純なものを見つけました。これが私の問題をどのように修正したのか疑問に思っている人のために私が遊んでいたコードです(読書と要素についても同様です):

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

なぜ問題を複雑にしたのかはわかりませんが、それ以上に単純なことはありません。

于 2010-12-11T02:29:54.347 に答える
0

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

于 2010-12-11T02:24:50.337 に答える