Web services web服务以XmlNode的形式返回XmlDocument,然后XPath不会';不行?

Web services web服务以XmlNode的形式返回XmlDocument,然后XPath不会';不行?,web-services,xpath,Web Services,Xpath,我尝试使用一个web服务/方法,它接受XmlDocument并返回XmlDocument。当我在C#应用程序中添加对此web服务的引用时,代理代码被定义为使用XmlNodes而不是XmlDocuments。这似乎是相当公认的行为(但确认和/或解释将是很好的-见此) 但是,如果我获取返回的XmlNode对象并尝试对“SelectNodes(XPath)”执行简单的XPath查询,则找不到任何节点,但匹配的节点确实存在 但是,如果我获取返回的XmlNode的OuterXml,并从中创建一个新的Xml

我尝试使用一个web服务/方法,它接受XmlDocument并返回XmlDocument。当我在C#应用程序中添加对此web服务的引用时,代理代码被定义为使用XmlNodes而不是XmlDocuments。这似乎是相当公认的行为(但确认和/或解释将是很好的-见此)

但是,如果我获取返回的XmlNode对象并尝试对“SelectNodes(XPath)”执行简单的XPath查询,则找不到任何节点,但匹配的节点确实存在

但是,如果我获取返回的XmlNode的OuterXml,并从中创建一个新的XmlDocument,那么XPath查询将找到我期望的节点

为什么呢?返回的XmlDocument/XmlNode(或两者之间的转换)是什么导致XPath查询无法按预期工作的

谢谢

编辑: Xml如下所示:

<Results xmlns="">
  <Result>
     :
    <Success>True</Success>
  </Result>
  <Result>
     :
    <Success>False</Success>
  </Result>
</Results>

创建自己的XmlDocument的一种替代方法是使用Linq,如下所示:

Dim results As XDocument = XDocument.Parse(xmlResults.OuterXml)

If (results.Descendants("Success").Count(Function(node) node.Value.ToLower() = "false") > 0) Then
    Throw New ApplicationException("Results returned indicate a problem:- " + xmlResults.OuterXml)
End If

您尝试的XPath看起来如何?XML看起来如何?如果您有一个无父的
XmlNode
,那么以
/
开头的路径可能与
XmlDocument
不同。或者,如果您有一个
xmlement
返回的
bar
,那么当然路径需要与
root
元素相关,因此您可以使用类似
root.SelectNodes(“foo”)的路径
要查找返回的
root
元素的所有
foo
子元素,同时使用完整的XmlDocument,可以使用
doc.SelectNodes(“root/foo”)
doc.SelectNodes(“/root/foo”)
Dim results As XDocument = XDocument.Parse(xmlResults.OuterXml)

If (results.Descendants("Success").Count(Function(node) node.Value.ToLower() = "false") > 0) Then
    Throw New ApplicationException("Results returned indicate a problem:- " + xmlResults.OuterXml)
End If