如何将XElement的值包装在![CDATA[ ]]中?

52

这是在使用来自 .net 的 XDocument 时出现的问题。

我曾认为这可能会起作用...

xElement.Element(elementName).Value = new XCData(value).ToString();

... 但最终呈现的效果却是这样的...

<name>&lt;![CDATA[hello world]]&gt;</name>
3个回答

49

XCDataXNode的一种类型。因此,您应该尝试将其Add到元素中,而不是设置值(这被documented为元素的扁平文本内容):

xElement.Element(elementName).Add(new XCData(value));

45

如果您正在创建XElement(而不是修改它),您还可以直接在构造函数中将其添加为内容:

new XElement(elementName, new XCData(value));

43

尝试一下

xElement.Element(elementName).ReplaceNodes(new XCData(value));

谢谢 :) 另外我想补充一下,我需要使用 CDATA 替换另一个具有更多同级节点的元素,所以我使用了 ReplaceWith,但这个想法来自于你的答案。 - Rameez Ahmed Sayad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接