C# 如何在xml中读写CDATA节点

来源:这里教程网 时间:2026-02-21 17:29:02 作者:

在C#中处理XML的CDATA节点,可以通过

XmlDocument
XDocument
来实现读取和写入。CDATA节点用于包裹不希望被解析器解析的文本内容,比如包含HTML、脚本或其他特殊字符的字符串。

使用 XmlDocument 读写 CDATA 节点

写入 CDATA 节点:

使用
XmlDocument
创建一个新的 XML 文档或加载已有文档
通过
CreateCDataSection
方法创建 CDATA 节点
将其添加到指定元素中

示例代码:

var doc = new XmlDocument(); doc.LoadXml(""); var cdata = doc.CreateCDataSection("这是CDATA内容,包含特殊字符 &\""); var element = doc.DocumentElement; element.AppendChild(cdata); // 保存到文件或输出 doc.Save("output.xml");

读取 CDATA 节点:

遍历子节点,判断节点类型是否为
XmlNodeType.CDATA
获取其
Value
InnerText

示例代码:

var doc = new XmlDocument(); doc.Load("output.xml"); foreach (XmlNode node in doc.DocumentElement.ChildNodes) { if (node.NodeType == XmlNodeType.CDATA) { Console.WriteLine("CDATA内容: " + node.Value); } }

使用 XDocument 读写 CDATA 节点

写入 CDATA 节点:

使用
XCData
类创建 CDATA 内容
添加到
XElement

示例代码:

var root = new XElement("root", new XCData("这里是可以包含和"引号"的文本") ); var doc = new XDocument(root); doc.Save("output.xml");

读取 CDATA 节点:

遍历节点,检查是否为
XCData
类型
通过类型转换获取值

示例代码:

var doc = XDocument.Load("output.xml"); foreach (var node in doc.Root.Nodes()) { if (node is XCData cdata) { Console.WriteLine("CDATA内容: " + cdata.Value); } }

基本上就这些。XmlDocument 更适合传统XML操作,XDocument 更现代、简洁。根据项目选择即可。注意:CDATA只是避免解析,不会加密或编码内容。

相关推荐