如何编辑保存在CDATA块中的文本内容?

时间:2014-03-20 11:49:16

标签: c# .net linq-to-xml xelement

我想在这个文档中编辑cdata块的内容。这是一个简化的例子:

<root><![CDATA[pi > 22/7]]></root>

我试过

var element = XElement.Parse("<root><![CDATA[pi > 22/7]]></root>");
element.Value = element.Value.Replace("> 22/7", "< 22/7");
element.Dump();

但是,结果没有CDATA块。

<root>pi &lt; 22/7</root>

我想要

<root><![CDATA[pi < 22/7]]></root>

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

您需要修改XCData元素的值:

var element = XElement.Parse("<root><![CDATA[pi > 22/7]]></root>");
var cdata = (XCData)element.FirstNode;
cdata.Value = cdata.Value.Replace("> 22/7", "< 22/7");
element.Dump();

答案 1 :(得分:0)

我去了

var newValue = element.Value.Replace("> 22/7", "< 22/7");
element.ReplaceNodes(new XCData(newValue));