エラーを解決する方法“式はノードセットに評価する必要があります”ノードの存在を確認するとき?
質問
次の.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));
前の式は、例外エラーを説明するブール値に評価されていました。助けてくれてありがとう!
所属していません StackOverflow