15

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

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

これは常に発生します:

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

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

4

3 に答える 3

19

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

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

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

後付けとして:元の xpath 式を使用できますが、SelectSingleNode では使用できませんが、Evaluate では次のように使用できます。

(bool)xmlDocument.CreateNavigator().Evaluate(String.Format("//ErrorTable/ProjectName/text()='{0}'", projectName));
于 2008-10-01T11:24:40.417 に答える
1

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

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

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

于 2008-10-01T11:13:11.177 に答える
1

試す:

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

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

編集:ばかげたエラー

于 2008-10-01T10:52:19.543 に答える