2

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

前任:

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


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

如果你把: <p>test</p>into MaterialText,它会&lt;p&gt;test&lt;/p&gt;在它的序列化输出中产生。如何修改它以生成字符串文字 AS XML 而不是转义序列?

需要明确的是,我正在寻找的输出是:<mattext><p>test</p></mattext>

顺便说一句 - 这不是我的第一选择,但不幸的是,必须遵守其他人的模式。

谢谢!

4

1 回答 1

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 添加某种缓存)

于 2013-07-31T19:14:42.707 回答