我有一个类,我想放置未转义的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
,则会在其序列化输出中生成<p>test</p>
。如何修改它以生成字符串文字AS XML而不是转义序列?
要清楚,我正在寻找的输出是:<mattext><p>test</p></mattext>
顺便说一下 - 这不是我的第一选择,但不幸的是,必须遵守别人的架构。
谢谢!
答案 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添加一些缓存)