【问题标题】:How do I serialize an object into an XDocument?如何将对象序列化为 XDocument?
【发布时间】:2009-04-30 09:28:48
【问题描述】:

我有一个标有 DataContract 属性的类,我想从该类的对象创建一个 XDocument。这样做的最佳方法是什么?

我可以通过XmlDocument 来做到这一点,但这似乎是一个不必要的步骤。

【问题讨论】:

  • 看第二个答案;我可能完全错了

标签: c# xml-serialization


【解决方案1】:

您可以直接在 XDocument 中创建 XmlWriter:

XDocument doc = new XDocument();
using (var writer = doc.CreateWriter())
{
    // write xml into the writer
    var serializer = new DataContractSerializer(objectToSerialize.GetType());
    serializer.WriteObject(writer, objectToSerialize);
}
Console.WriteLine(doc.ToString());

【讨论】:

  • 嗯...看来我无法删除已接受的答案...我将在 OP 中添加评论...
  • -1 朝着正确方向迈出了一大步,但缺乏对问题的完整答案。你能把实际的序列化包含在 XDocument 中吗?
  • @Levitikon:我使用 DataContractSerializer 编辑了答案以涵盖序列化。
  • 这不起作用。它为我返回了一个空字符串...
【解决方案2】:

我就是这样做的,它提供了干净的 xml,其中没有所有命名空间的东西,

 XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));

        using (var writer = xdoc.CreateWriter())
        {
            System.Xml.Serialization.XmlSerializer x =
            new System.Xml.Serialization.XmlSerializer(objecttoserialize.GetType());

            x.Serialize(writer, objecttoserialize);
        }

        Debug.WriteLine(xdoc.ToString());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2011-12-03
    • 2019-03-04
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多