Wie kann ich den Fehler beheben "- Ausdrucks muss ein node-set" bei der überprüfung auf die Existenz eines Knotens?

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

  •  03-07-2019
  •  | 
  •  

Frage

Ich bin versucht, um zu überprüfen das Vorhandensein eines Knoten mit den folgenden .NET-code:

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

Dies wirft immer:

XPathException:Ausdrucks muss ein node-set.

Warum erhalte ich diesen Fehler und wie kann ich es beheben?Danke.

War es hilfreich?

Lösung

Der Ausdruck gegeben zu einem booleschen Wert ausgewertet, nicht in einem Knoten-set.Ich nehme an, Sie möchten prüfen, ob der Projektname gleich die parametrisierten text.In diesem Fall müssen Sie schreiben

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

Dies gibt Ihnen eine Liste aller Knoten (nodeset) passend zu den gegebenen Zustand.Diese Liste kann auch leer sein, in diesem Fall die C#-Ausdruck in Ihrem Beispiel wird null zurückgegeben.

Wie ein nachträglicher Einfall:Sie können verwenden Sie die ursprüngliche xpath-Ausdruck, aber nicht mit SelectSingleNode, aber mit Bewerten, wie diese:

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

Andere Tipps

Versuchen:

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

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

Edit: dumme Fehler

Der XPath-Ausdruck enthielt einen subtilen Fehler. Es hätte sein sollen:

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

Der vorherige Ausdruck in einen boolean wurde die Bewertung, die die Ausnahmefehler erklärt. Danke für die Hilfe!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top