【问题标题】:Serialize XML with XML string使用 XML 字符串序列化 XML
【发布时间】:2012-02-08 15:14:09
【问题描述】:

我必须生成以下 XML

<object>
    <stuff>
        <body>
            <random>This could be any rondom piece of unknown xml</random>
        </body>
    </stuff>
</object>

我已将它映射到一个类,其 body 属性为字符串类型。

如果我将正文设置为字符串值:“&lt;random&gt;This could be any rondom piece of unknown xml&lt;/random&gt;

字符串在序列化过程中被编码。如何不对字符串进行编码以便将其写入原始 XML?

我也希望能够反序列化它。

【问题讨论】:

  • 什么语言?什么平台?
  • Opps,刚刚添加了 .NET 和 C# 标签

标签: c# .net xml serialization xml-serialization


【解决方案1】:

XmlSerializer 根本不相信你会从string 生成有效的 xml。如果你想让一个成员成为 ad-hoc xml,它必须是 XmlElement 这样的东西。例如:

[XmlElement("body")]
public XmlElement Body {get;set;}

使用Body 和名为randomXmlElementInnerText"This could be any rondom piece of unknown xml" 可以工作。


[XmlRoot("object")]
public class Outer
{
    [XmlElement("stuff")]
    public Inner Inner { get; set; }
}
public class Inner
{
    [XmlElement("body")]
    public XmlElement Body { get; set; }
}

static class Program
{
    static void Main()
    {
        var doc = new XmlDocument();
        doc.LoadXml(
           "<random>This could be any rondom piece of unknown xml</random>");
        var obj = new Outer {Inner = new Inner { Body = doc.DocumentElement }};

        new XmlSerializer(obj.GetType()).Serialize(Console.Out, obj);
    }
}

【讨论】:

  • 谢谢,你似乎对 xml 序列化很了解,你有机会回答:stackoverflow.com/questions/8853082/custom-xml-serialization
  • 很酷的解决方案,即使反序列化也可以工作 - 但如果随机 XML 像 &lt;a&gt;---&lt;/a&gt;&lt;a&gt;---&lt;/a&gt;&lt;b&gt;----&lt;/b&gt; 会怎样?然后它不能被加载到 XmlDocument 中。这就是我需要做的——反序列化​​。
猜你喜欢
  • 2021-06-07
  • 2013-01-16
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多