如何使用XmlWriter / XmlReader读/写复杂对象

时间:2010-12-11 01:19:14

标签: c# serialization xmlreader xmlwriter

我一直在尝试使用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)方法。
  3. 我还没有测试过第二个,但我认为它可能会起作用(因为ReadValue结果而不确定)。

    然后我的问题是:我错过了重要的事情还是唯一的方法?或者有更好的方法来解决这个问题吗?

    感谢。

2 个答案:

答案 0 :(得分:3)

在玩完之后,我发现了一些非常简单的东西。这是我正在玩的代码,对于那些想知道我是如何修复我的问题(类似于阅读和元素):

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

我不知道为什么我让这个问题复杂化,但它不能比这简单得多。

答案 1 :(得分:0)

尝试使用XmlDocument类。它使用XmlNode作为轻松写出xml的基础。您还可以序列化一个类,或使用DataSet类写出xml,或将其读回数据集或XmlDocument类型结构。