You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.Net中如何将CDATA节点转为编码字符串并批量查找CDATA节点?

解决方案:处理XML中CDATA节点的转换与查找

查找所有CDATA节点的XPath表达式

要定位XML中任意层级的所有CDATA节点,可使用以下XPath表达式:

//node()[local-name()='#cdata-section']

该表达式会匹配所有类型为CDATA的节点,无论其处于XML结构的哪个层级。

.NET中转换CDATA为编码内容的方法

以下方法可将手动生成的XML字符串中的所有CDATA节点替换为自动编码的文本节点,使其格式与SQL Server存储后返回的XML一致:

using System.Xml;

public static string NormalizeXmlCData(string rawXml)
{
    var xmlDoc = new XmlDocument();
    xmlDoc.LoadXml(rawXml);

    // 查找所有CDATA节点
    var cdataNodes = xmlDoc.SelectNodes("//node()[local-name()='#cdata-section']");

    foreach (XmlCDataSection cdataNode in cdataNodes)
    {
        // 创建包含CDATA内容的文本节点,自动完成特殊字符编码
        var textNode = xmlDoc.CreateTextNode(cdataNode.InnerText);
        // 替换CDATA节点为文本节点
        cdataNode.ParentNode.ReplaceChild(textNode, cdataNode);
    }

    return xmlDoc.OuterXml;
}

说明

  • 该方法通过XmlDocument解析原始XML,批量替换所有CDATA节点为普通文本节点,生成的XML会自动对特殊字符(如<、>、&)进行HTML实体编码,与SQL Server存储XML列后的输出格式完全匹配。
  • 如果XML包含命名空间,需初始化XmlNamespaceManager并传入SelectNodes方法,确保节点查找正常工作。

内容的提问来源于stack exchange,提问作者freefaller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:27:51