我正在寻找一种方法来创建一个xml元素,该元素将接受可能包含html元素(或任何其他有效的xml元素)的文本字符串,该元素可能如下所示:
"Test text with <strong>custom nodes</strong> that shouldn't be encoded"
我已尝试将XmlAnyElement
与XmlNode[]
结合使用,但没有运气。
我想要的输出应该如下:
<Root>
<Text>
Test text with <strong>custom nodes</strong> that shouldn't be encoded
</Text>
</Root>
对于这堂课:
public class Root
{
// Problematic property
public string Text { get; set; }
}
实现此类行为的最简单方法是什么(问题的一部分是我的元素可能以裸文开始和/或结束)?
答案 0 :(得分:1)
我找到的简单解决方法是创建一个XmlElement
帮助器属性,该属性将使用<Text>..</Text>
将XmlElement
包裹的字符串作为XmlDocument
返回并忽略Text
像这样的属性:
public class Root
{
[XmlIgnore]
public string Text { get; set; }
[XmlAnyElement]
public XmlElement TextElement
{
get
{
var x = new XmlDocument();
x.LoadXml(string.Format("<Text>{0}</Text>", Text));
return x.DocumentElement;
}
set { Text = value.InnerXml; }
}
}
这将接受Text
下的任何,但请注意,如果Text
属性设置为无效的xml,则序列化将失败。