【问题标题】:Insert XElement in XCData在 XCData 中插入 XElement
【发布时间】:2012-01-24 00:50:55
【问题描述】:

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

XML 的一部分如下所示:

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

从数据列表中提取的数据将是“一些文本”,没有周围的 P 标记。

所以,我想要做的是(sn-p):

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

但我不能做 new XCData(new XElement("p", ....)), 有什么简单的方法可以解决这个问题?

【问题讨论】:

    标签: c# linq-to-xml xelement


    【解决方案1】:

    &lt;p&gt;Some text&lt;/p&gt; 不是真的 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()),
    

    【讨论】:

      【解决方案2】:

      这不是一个元素。
      CDATA 块的全部意义在于它们只能保存纯文本。

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

      【讨论】:

      • 我明白,关于 CDATA。不幸的是,XML 的外观不在我的掌控之中。我只是得到了一个 XML 文档,并且必须添加到 XML 生成器脚本中以确保它与从我们的列表中提取的数据吐出相同的 XML。
      猜你喜欢
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 2014-06-17
      • 1970-01-01
      相关资源
      最近更新 更多