首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从WSDL(xml格式)提取数据时,无法获得所需的输出

从WSDL(xml格式)提取数据时,无法获得所需的输出
EN

Stack Overflow用户
提问于 2014-12-27 04:03:33
回答 1查看 105关注 0票数 1

我正在尝试从这个WSDL文件(xml格式) "http://pastebin.com/gF7aHwa3“中获取一些数据,例如,wsdl:service name的值,它是CinemaData。此代码未获得任何值:

代码语言:javascript
复制
 static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();

            doc.Load(@"C:\wsdl\0_Argentina_CinemaData.wsdl");

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
            //nsmgr.AddNamespace("soap", "http://schemas.xmlsoap.org/wsdl/soap");
            //nsmgr.AddNamespace("tm", "http://microsoft.com/wsdl/mime/textMatching");
            //nsmgr.AddNamespace("soapenc", "http://schemas.xmlsoap.org/soap/encoding");
            //nsmgr.AddNamespace("mime", "http://schemas.xmlsoap.org/wsdl/mime");
            //nsmgr.AddNamespace("tns", "http://www.e-wavegroup.com");
            //nsmgr.AddNamespace("s", "http://www.w3.org/2001/XMLSchema");
            //nsmgr.AddNamespace("soap12", "http://schemas.xmlsoap.org/wsdl/soap12");
            //nsmgr.AddNamespace("http", "http://schemas.xmlsoap.org/wsdl/http");
            //nsmgr.AddNamespace(String.Empty, "http://www.e-wavegroup.com");
            nsmgr.AddNamespace("wsdl", "http://schemas.xmlsoap.org/wsdl");


            XmlNodeList SNameNodes = doc.DocumentElement.SelectNodes("//wsdl:definition/wsdl:service", nsmgr);

            List<serviceName> snList = new List<serviceName>();

            foreach (XmlNode node in SNameNodes)
            {
                System.Console.WriteLine("The service name is " + node.Attributes["name"].Value);                                      
            }
        }
EN

回答 1

Stack Overflow用户

发布于 2014-12-27 16:41:21

有几个问题:)

  1. 名称空间不是wsdl:definition

-尾随的斜杠使它们完全不同

  • 根节点是wsdl:definitions not

所以:

代码语言:javascript
复制
var nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("wsdl", "http://schemas.xmlsoap.org/wsdl/");
var SNameNodes = doc.SelectNodes("/wsdl:definitions/wsdl:service", nsmgr);
foreach (XmlNode node in SNameNodes)
{
    System.Console.WriteLine("The service name is " + node.Attributes["name"].Value);
}

您还可以在文档之外直接访问SelectNodes,并且由于wsdl:definitions是根节点,因此不需要使用双斜杠。

最后一点--您可能希望考虑迁移到Linq to Sql --您仍然拥有完整的XPath解析功能,而且它还具有many other benefits

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27661421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档