C#怎么用LINQ to XML创建带CDATA的节点

7次阅读

在 C# 中创建 CDATA 节点须使用 XCData 类显式包装内容并作为 XElement 子节点添加,不能直接用字符串或赋值给 Value 属性;示例:new XElement(“description”, new XCData(“Hello & World!”))。

C# 怎么用 LINQ to XML 创建带 CDATA 的节点

在 C# 中用 LINQ to XML 创建带 CDATA 的节点,关键不是直接用 XElement,而是要用XCData 类显式包装内容,并作为子节点添加到目标元素中。

正确创建 CDATA 节点的方法

XCData是专门用于表示 CDATA 节的类型,它必须作为 XElement 的子节点存在,不能直接作为根或独立对象写入文档。常见错误是试图把字符串直接标记为 CDATA,其实必须“包裹”进去。

  • 创建一个XElement(比如
  • new XCData("你的 HTML 或特殊字符") 构造 CDATA 内容
  • 把这个 XCData 对象传给 XElement 的构造函数或用 Add() 方法添加

完整代码示例

下面这段代码生成一个包含 CDATA 的 XML 片段:

var doc = new XDocument(new XElement("root",         new XElement("description",             new XCData("Hello & World!"))));  Console.WriteLine(doc.ToString());

输出结果会是:

Hello & World!]]>

注意:原始字符串中的 &不会被转义——这正是 CDATA 的作用。

常见误区提醒

  • 不要 对字符串调用 .ToString() 再塞进XElement——那只是普通文本,会被自动转义
  • 不要 XElement.Value = new XCData(……)——Value只接受字符串,赋值会调用 ToString() 丢掉 CDATA 语义
  • 如果已有 XElement,可用element.Add(new XCData("……")) 追加,但注意 CDATA 会成为子节点;若想替换全部内容,先 element.RemoveAll()Add()

配合属性和其他节点一起使用

CDATA 可以和普通子元素、属性共存:

var item = new XElement("item",     new XAttribute("id", "101"),     new XElement("title", "Intro"),     new XElement("body",         new XCData("

First para

")));

这样生成的 内就是纯 CDATA,而 idtitle仍是标准 XML 结构。

基本上就这些。核心就一条:用 XCData 实例,别用字符串硬凑。

星耀云
版权声明:本站原创文章,由 星耀云 2026-01-05发表,共计1052字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources