2013-03-27 19 views
1

自动生成一些文档(并学习xpath)我打算从WSDL文件中获取所有操作的列表。使用xpath从wsdl文件中选择所有操作

我迄今为止尝试是:

 doc = new XmlDocument(); 
     doc.Load(@"C:\temp\tempuri.org.wsdl"); 
     var list = doc.SelectNodes("wsdl:definitions/wsdl:portType/wsdl:operation"); 

这给我的错误:

Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.

任何人都可以解释为什么我收到此错误,以及如何解决它?

回答

1

我建议考虑看看这个答案:C# XPath help - Expression not working

您需要在开始查询前注册的命名空间wsdl

例如为:

XPathDocument xDoc = new XPathDocument(@"C:\temp\tempuri.org.wsdl"); 
XPathNavigator xNav = xDoc.CreateNavigator(); 
XmlNamespaceManager mngr = new XmlNamespaceManager(xNav.NameTable); 
mngr.AddNamespace("wsdl", "http://schemas.xmlsoap.org/wsdl/"); // this namespace may need to be different - I don't know what your wsdl file looks like 
XPathNodeIterator xIter = xNav.Select("wsdl:definitions/wsdl:portType/wsdl:operation",mngr); 

或者您可以使用LINQ到XML - 看到乔恩斯基特这样的回答:Namespace Manager or XsltContext needed

但是你说你想学习的XPath,所以我想这是无关紧要的。

相关问题