How do I make the value of an XElement be wrapped in ![CDATA[***]]?

24,347

Solution 1

Try

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

Solution 2

XCData is a type of XNode. As such, you should try to Add it to the element, rather than set the value (which is documented to be the flattened text content of the element):

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

Solution 3

If you are creating the XElement (vs. modifying it), you can also just add add it directly in the constructor as the content like so:

new XElement(elementName, new XCData(value));
Share:
24,347
Ian Warburton
Author by

Ian Warburton

Updated on July 24, 2020

Comments

  • Ian Warburton
    Ian Warburton almost 4 years

    This is when using XDocument from .net.

    I thought this might work...

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

    ... but it comes out like this...

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