在XCData中插入XElement

时间:2012-01-23 16:48:43

标签: c# linq-to-xml xelement

我正在修改一个XML生成器脚本,该脚本从Sharepoint列表中提取数据,并从中生成XML。

XML的一部分如下:

<node>
    <node2>
        <![CDATA[
            <p>Some text</p>
        ]]>
    </node2>
    <otherNodesHere>Yadda yadda</otherNodesHere>
</node>

从数据列表中提取的数据将是“Some text”而没有周围的P标记。

所以,我想要做的是(摘录):

new XElement("node",
    new XElement("node2",
        new XCData(
            new XElement("p", variableForTheDatainSP)),

但是我不能做新的XCData(新的XElement(“p”,....)), 什么是一个简单的方法来解决这个问题?

2 个答案:

答案 0 :(得分:5)

<p>Some text</p>不是真的 XElement - 它只是看起来像XML的文本。所以你要使用:

new XElement("node",
    new XElement("node2",
        new XCData("<p>Some text</p>")))

或者,如果您想通过 XElement构建,则可以随时致电ToString()

new XElement("node",
    new XElement("node2",
        new XCData(
            new XElement("p", variableForTheDatainSP).ToString()),

答案 1 :(得分:1)

这不是一个元素 CDATA块的重点是它们只能 保持纯文本。

如果要将看起来像XML的纯文本放入CDATA块,可以传递new XElement(...).ToString()以获取原始XML字符串。