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

Sau*_*eil 2 c# serialization xmlwriter xmlreader

我一直试图找到一种使用 XmlReader/XmlWriter 编写 XML 的简单方法。我真的不喜欢使用接口“IXmlSerializable”,但我对我的某些数据类别无选择。

无论如何,我想做的很简单:

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

所以,我找到了 2 个解决方法:

  1. 编写我自己的例程来手动编写我的对象。相当可笑,因为 .Net 已经做到了。
  2. 使用 StringWriter 创建一个新的序列化程序并使用 WriteValue(string) 方法。

我还没有测试第二个,但我认为它可能会起作用(不确定,因为 ReadValue 结果)。

那么我的问题是:我错过了什么重要的东西还是唯一的方法?或者有没有更好的方法来处理?

谢谢。

Sau*_*eil 5

玩了一圈之后,发现一个很简单的东西。这是我正在为那些想知道我如何解决我的问题的人使用的代码(类似于阅读和元素):

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

我不知道为什么我把问题复杂化了,但没有比这更简单的了。