エラーを解決する方法“式はノードセットに評価する必要があります”ノードの存在を確認するとき?

StackOverflow https://stackoverflow.com/questions/157044

  •  03-07-2019
  •  | 
  •  

質問

次の.NETコードを使用してノードの存在を確認しようとしています:

xmlDocument.SelectSingleNode(
        String.Format("//ErrorTable/ProjectName/text()='{0}'", projectName));

これは常に発生します:

  

XPathException:式はノードセットに評価される必要があります。

このエラーが発生する理由と解決方法を教えてください。ありがとう。

役に立ちましたか?

解決

指定された式は、ノードセットではなくブール値に評価されます。 ProjectNameがパラメーター化されたテキストと等しいかどうかを確認したいと思います。この場合、あなたは書く必要があります

//ErrorTable/ProjectName[text()='{0}']

これにより、指定された条件に一致するすべてのノード(ノードセット)のリストが表示されます。このリストは空の場合があります。その場合、サンプルのC#式はnullを返します。

後から:元のxpath式を使用できますが、SelectSingleNodeではなく、次のようにEvaluateで使用できます:

(bool)xmlDocument.CreateNavigator().Evaluate(String.Format("//ErrorTable/ProjectName/text()='{0}'", projectName));

他のヒント

試してください:

Node node = xmlDocument.SelectSingleNode(String.Format("//ErrorTable/ProjectName = '{0}'", projectName));

if (node != null) {
    // and so on
}

編集:愚かなエラー

XPath式に微妙なエラーが含まれていました。次のようになっているはずです:

xmlDocument.SelectSingleNode(String.Format("//ErrorTable/ProjectName[text()='{0}']", projectName));

前の式は、例外エラーを説明するブール値に評価されていました。助けてくれてありがとう!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top