Это при использовании XDocument из .net.
Я думал, что это может сработать ...
xElement.Element(elementName).Value = new XCData(value).ToString();
... но так получается ...
<name><![CDATA[hello world]]></name>
XCData - это тип XNode . Таким образом, вы должны попытаться добавить его к элементу, а не устанавливать значение (которое задокументировано как уплощенное текстовое содержимое элемента):
xElement.Element(elementName).Add(new XCData(value));
Попробуйте
xElement.Element(elementName).ReplaceNodes(new XCData(value));
Если вы создаете XElement (вместо его изменения), вы также можете просто добавить и добавить его непосредственно в конструкторе в качестве содержимого, например:
new XElement(elementName, new XCData(value));