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

C#读取SOAP XML节点返回Null值问题求助

解决SOAP XML中CDATA内节点无法通过XPath获取的问题

你的问题核心是目标节点被包裹在CDATA块中,XmlDocument会将CDATA内容识别为纯文本而非可解析的XML结构,直接用//SERVICIO/TIPO_USUARIO这类XPath自然无法定位到节点,返回null是必然结果。

解决步骤

  1. 从SOAP XML中提取<xmlentrada>节点内的CDATA文本内容;
  2. 将提取的文本加载为独立的XmlDocument对象;
  3. 在新的XmlDocument中使用XPath查找目标节点。

修改后的C#代码

XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xmlString);

// 提取xmlentrada节点内的CDATA文本
XmlNode xmlEntradaNode = xmlDocument.SelectSingleNode("//xmlentrada");
string innerXmlContent = xmlEntradaNode.InnerText;

// 将CDATA内的文本加载为新的XML文档
XmlDocument innerDoc = new XmlDocument();
innerDoc.LoadXml(innerXmlContent);

// 查找目标节点并处理
XmlNode tipoUsuarioNode = innerDoc.SelectSingleNode("//SERVICIO/TIPO_USUARIO");
if (tipoUsuarioNode != null)
{
    string tipoUsuarioValue = tipoUsuarioNode.InnerText;
    // 填充NOMBRE_REMITENTE等其他节点示例
    XmlNode nombreRemitenteNode = innerDoc.SelectSingleNode("//SERVICIO/NOMBRE_REMITENTE");
    if (nombreRemitenteNode != null)
    {
        nombreRemitenteNode.InnerText = "待填充的寄件人名称";
    }
    
    // 若需要同步修改原SOAP XML,将修改后的内容放回xmlentrada节点
    xmlEntradaNode.InnerText = innerDoc.OuterXml;
}

补充提示

  • 处理时务必添加空值判断,避免空引用异常;
  • 如果需要修改原SOAP XML中的CDATA内容,记得将修改后的innerDoc.OuterXml重新赋值给xmlEntradaNode.InnerText。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:53:28