如何将未转义的XML放入类的XmlText字段中?

时间:2013-07-31 18:57:15

标签: c# xml

我有一个类,我想放置未转义的XML(实际上是HTML)。它不符合规范,因为它可以是任意的html。我如何以声明方式实现这一目标?

例如:

public class Material
{
    [XmlElement(ElementName = "mattext")]
    public string MaterialText { get; set; }


    public bool ShouldSerializeMaterialText()
    {
        return !string.IsNullOrEmpty(MaterialText);
    }
}

如果您将<p>test</p>放入MaterialText,则会在其序列化输出中生成&lt;p&gt;test&lt;/p&gt;。如何修改它以生成字符串文字AS XML而不是转义序列?

要清楚,我正在寻找的输出是:<mattext><p>test</p></mattext>

顺便说一下 - 这不是我的第一选择,但不幸的是,必须遵守别人的架构。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您无法使用CDATA部分,则必须使用以下解决方法:

public class Material
{
    [XmlIgnore]
    public string MaterialText { get; set; } 

    [XmlElement(ElementName = "mattext")]
    public XmlElement MatText
    {
        get {
            var doc = new XmlDocument();
            doc.LoadXml(MaterialText);
            return doc.DocumentElement;
        }
        set { /* implement in a similar way */ }
   }

(你当然可以为getter添加一些缓存)