我有一个ASP.NET Web API控制器,它返回一个实体,其中包含一些可能包含HTML标记的属性。默认情况下,XML格式化程序将替换所有<和>与& lt;和& gt;因为它们不是XML中的有效字符。现在,我想知道是否可以禁用此替换功能,而是将内容包装在CData标签中。
所以而不是:
<entity ...>
<element>
Some text with <strong>html</strong>
</element>
</entity>
我想要这个:
<entity ...>
<element>
<![CDATA[
Some text with <strong>html</strong>
]]>
</element>
</entity>
我正在寻找一种方法来实现这一点,方法是配置XML格式化程序,而无需直接在控制器或实体中进行更改。如果不从头开始编写我自己的MediaTypeFormatter类,这可能吗?
答案 0 :(得分:0)
我用那个片段实现了它:
[XmlIgnore]
public string Content { get; set; }
[DataMember]
[XmlText]
public XmlNode[] CdataContent
{
get => new XmlNode[] { new XmlDocument().CreateCDataSection(Content) };
set => Content = value[0].Value;
}
CdataContent
将为<![CDATA[ ... ]]>