次の .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));
XPath 式に微妙なエラーが含まれていました。次のようになっているはずです。
xmlDocument.SelectSingleNode(String.Format("//ErrorTable/ProjectName[text()='{0}']", projectName));
前の式はブール値に評価されていたため、例外エラーが説明されています。助けてくれてありがとう!
試す:
Node node = xmlDocument.SelectSingleNode(String.Format("//ErrorTable/ProjectName = '{0}'", projectName));
if (node != null) {
// and so on
}
編集:ばかげたエラー