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

如何读取SOAP XML数据并提取ERROR_CODE、PROPOSAL_NO及CoverDtl字段

问题根因

你现有代码无法提取节点的核心原因是未处理XML中的命名空间:
你提供的SOAP响应里,<GeneratePCCVProposalResponse>标签定义了默认命名空间xmlns="http://tempuri.org/",它下面的所有子节点(包括你要提取的PROPOSAL_NO、ERROR_CODE、CoverDtl)都属于这个命名空间。直接用不带命名空间前缀的XPath查询,只能匹配无命名空间的节点,所以会返回空。

解决代码

' 1. 加载SOAP响应XML
Dim xmlDoc As New XmlDocument()
xmlDoc.LoadXml("这里替换为你的SOAP响应字符串")

' 2. 注册命名空间,和XML中的定义对应
Dim nsManager As New XmlNamespaceManager(xmlDoc.NameTable)
' 注册SOAP命名空间
nsManager.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/")
' 注册业务接口的默认命名空间,自定义前缀为temp
nsManager.AddNamespace("temp", "http://tempuri.org/")

' 3. 提取单个字段
Dim PROPOSAL_NO As String = xmlDoc.SelectSingleNode("//temp:PROPOSAL_NO", nsManager).InnerText
Dim ERROR_CODE As String = xmlDoc.SelectSingleNode("//temp:ERROR_CODE", nsManager).InnerText

' 4. 提取所有CoverDtl节点的字段
Dim coverDtls As XmlNodeList = xmlDoc.SelectNodes("//temp:CoverDtl", nsManager)
For Each dtl As XmlNode In coverDtls
    Dim CoverDesc As String = dtl.SelectSingleNode("temp:CoverDesc", nsManager).InnerText
    Dim Premium As String = dtl.SelectSingleNode("temp:Premium", nsManager).InnerText
    Dim Type As String = dtl.SelectSingleNode("temp:Type", nsManager).InnerText
    ' 此处可自行处理每个CoverDtl的字段值
Next

注意事项

可以在取InnerText前先判断节点是否不为Nothing,避免节点不存在时报空引用异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:36:00