0

XmlDocument を受け入れて XmlDocument を返す Web サービス/メソッドを利用しようとしています。この Web サービスへの参照を C# アプリケーションに追加すると、XmlDocuments の代わりに XmlNodes を使用するようにプロキシ コードが定義されます。これは、かなりよく認識されている動作のようです(ただし、確認および/または説明があると便利です。SO hereを参照してください)

ただし、返された 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>

...そしてXPathは次のようになります...

Dim xPath As String = "//Result[Success='False']"

If (xmlResults.SelectNodes(xPath).Count > 0) Then
    Throw New ApplicationException("Results returned indicate a problem:- " + xmlResults.OuterXml)
End If
4

1 に答える 1

0

独自の 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
于 2013-09-12T08:09:08.870 に答える