获取xelement以将xml属性值视为CDATA

时间:2017-01-09 21:30:29

标签: c# xml-parsing xelement

我试图在属性值中包含html内容(例如<tag attribute="<b>hi</b>"></tag>)。根据{{​​3}},似乎应该默认在字符串属性类型上完成,但是我得到了无效的字符错误。有没有办法让XAttribute将其视为CDATA?

1 个答案:

答案 0 :(得分:1)

您不能将XML属性值指定为CDATA。您可以做什么,可以将要放置的xml转义为值:

<tag attribute="<b>hi</b>"></tag>

将成为

<tag attribute="&lt;b&gt;hi&lt;/b&gt;"></tag>

如果要构建文档并且要添加此属性,则只需在XAttribute构造函数中添加html:

var doc = new XDocument(new XElement("tag", new XAttribute("attribute", "<b>hi</b>")));

要将值作为xml文档获取,您可以使用以下代码:

var doc = XDocument.Parse("<tag attribute=\"&lt;b&gt;hi&lt;/b&gt;\"></tag>");
var attributeValue = doc.Root.Attribute("attribute").Value;

var newDoc = XDocument.Parse(attributeValue);