解析C#中的SOAP响应…不理解XML名称空间

解析C#中的SOAP响应…不理解XML名称空间,c#,xml,xml-parsing,C#,Xml,Xml Parsing,请原谅,我不熟悉肥皂和肥皂。我似乎不知道如何正确设置名称空间以在SOAP响应中查找节点 以下是web服务查询返回空时的响应: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns:VXWSResponse xmlns:ns="vx.sx"> <ns:List ns:id=

请原谅,我不熟悉肥皂和肥皂。我似乎不知道如何正确设置名称空间以在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>
两个节点都返回null。我在这个站点上看过很多其他文章,但是我没有看到如何在响应XML中正确地处理名称空间


感谢您的帮助

id是列表节点的属性,而不是名称空间

我编辑了我的答案,以检查徽章元素,因为这似乎是您想要查找的全部内容

        XmlNamespaceManager manager = new XmlNamespaceManager(xmlDoc.NameTable);
        manager.AddNamespace("ns", "vx.sx");

        XmlNode badge = xmlDoc.SelectSingleNode("//ns:Badge", manager);

        if (badge == null)
        {
          // no badge element
        }
        else
        {
            // badge element present
        }

id是列表节点的属性,而不是名称空间

我编辑了我的答案,以检查徽章元素,因为这似乎是您想要查找的全部内容

        XmlNamespaceManager manager = new XmlNamespaceManager(xmlDoc.NameTable);
        manager.AddNamespace("ns", "vx.sx");

        XmlNode badge = xmlDoc.SelectSingleNode("//ns:Badge", manager);

        if (badge == null)
        {
          // no badge element
        }
        else
        {
            // badge element present
        }

您真的需要手工解析SOAP吗?您想要实现什么?我无法控制web服务,这需要在CE 5/.NET 2上运行,因此我不确定是否可以使用服务引用。我只需要测试标记是否存在。您真的需要手动解析SOAP吗?您想要实现什么?我无法控制web服务,这需要在CE 5/.NET 2上运行,因此我不确定是否可以使用服务引用。我只需要测试标签是否存在。就是这样。我知道事情会很简单。非常感谢。成功了。我知道事情会很简单。非常感谢。
        XmlNamespaceManager manager = new XmlNamespaceManager(xmlDoc.NameTable);
        manager.AddNamespace("ns", "vx.sx");

        XmlNode badge = xmlDoc.SelectSingleNode("//ns:Badge", manager);

        if (badge == null)
        {
          // no badge element
        }
        else
        {
            // badge element present
        }