请原谅,我是 SOAP 和 C# 的新手。我似乎无法弄清楚如何正确设置命名空间以在 SOAP 响应中查找节点。
以下是 Web 服务查询返回空时的响应:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:VXWSResponse xmlns:ns="vx.sx">
<ns:List ns:id="result" />
</ns:VXWSResponse>
</soapenv:Body>
</soapenv:Envelope>
这是返回数据时的响应:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:VXWSResponse xmlns:ns="vx.sx">
<ns:List ns:id="result">
<ns:Badge>USER DATA</ns:Badge>
</ns:List>
</ns:VXWSResponse>
</soapenv:Body>
</soapenv:Envelope>
我只需要知道标签是否存在。
这是我到目前为止所拥有的。
XmlNamespaceManager manager = new XmlNamespaceManager(xml.NameTable);
manager.AddNamespace("ns", "vx.sx");
manager.AddNamespace("id", "result");
xmlNode badge = xml.SelectSingleNode("//id:Badge", manager);
XmlNode result = xml.SelectSingleNode("//ns:result", manager);
两个节点都返回 null。我查看了该站点上的大量其他文章,但没有看到如何正确处理响应 XML 中的命名空间。
任何帮助表示赞赏!