Dot-Net

在檢查節點是否存在時,如何解決錯誤“表達式必須評估為節點集”?

  • December 20, 2011

我正在嘗試使用以下 .NET 程式碼檢查節點是否存在:

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

這總是引發:

XPathException:表達式必須計算為節點集。

為什麼我會收到此錯誤,我該如何解決?謝謝你。

給定的表達式計算為布爾值,而不是節點集。我假設您想檢查 ProjectName 是否等於參數化文本。在這種情況下,您需要編寫

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

這為您提供了與給定條件匹配的所有節點(節點集)的列表。此列表可能為空,在這種情況下,範例中的 C#-Expression 將返回 null。

作為事後的想法:您可以使用原始的 xpath 表達式,但不能使用 SelectSingleNode,而是使用 Evaluate,如下所示:

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

引用自:https://stackoverflow.com/questions/157044