【问题标题】:How to read/write complex object with XmlWriter/XmlReader如何使用 XmlWriter/XmlReader 读取/写入复杂对象
【发布时间】:2011-05-23 19:32:49
【问题描述】:

我一直在尝试寻找一种使用 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) 方法。

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

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

谢谢。

【问题讨论】:

  • 您看过 LINQ to XML 吗?这有点工作,但很管用。
  • 是的,我知道这个想法,但从未使用过。但是这里我的问题是我的复杂对象有很多子对象,每个子对象都定义了 XmlAttributes。所以我需要阅读这些属性。我只是不想盲目地写元素。

标签: c# serialization xmlreader xmlwriter


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 2016-06-22
      • 2010-11-07
      • 1970-01-01
      相关资源
      最近更新 更多