如何使 XElement 的值包含在 ![CDATA[***]] 中?

Posted

技术标签:

【中文标题】如何使 XElement 的值包含在 ![CDATA[***]] 中?【英文标题】:How do I make the value of an XElement be wrapped in ![CDATA[***]]? 【发布时间】:2021-06-02 10:45:01 【问题描述】:

这是在使用 .net 中的 XDocument 时。

我认为这可能有效...

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

...但是结果是这样的...

<name>&lt;![CDATA[hello world]]&gt;</name>

【问题讨论】:

【参考方案1】:

XCData 是XNode 的一种。因此,您应该尝试将 Add 设置为元素,而不是设置值(将 documented 设置为元素的展平文本内容):

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

【讨论】:

【参考方案2】:

如果您正在创建XElement(而不是修改它),您也可以直接在构造函数中添加添加,如下所示:

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

【讨论】:

【参考方案3】:

试试

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

【讨论】:

谢谢 :) 只是为了补充一点,我需要 CDATA 来替换另一个具有更多兄弟节点的元素,因此使用了 ReplaceWith 但这个想法来自您的回答。

以上是关于如何使 XElement 的值包含在 ![CDATA[***]] 中?的主要内容,如果未能解决你的问题,请参考以下文章

如何确定 XElement.Elements() 是不是包含具有特定名称的节点?

如何使用 XElement 打开 xml?

如何搜索具有特定属性值的 XElement?

获取 xelement 属性值

XElement 上的 XPath 列表

XElement 使用介绍