read net leer example .net xml xpath

.net - leer - xpath vb net



¿Cómo resuelvo el error "Expression debe evaluar a un conjunto de nodos" al verificar la existencia de un nodo? (3)

Estoy intentando verificar la existencia de un nodo usando el siguiente código .NET:

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

Esto siempre aumenta:

XPathException: Expression debe evaluar a un conjunto de nodos.

¿Por qué recibo este error y cómo puedo resolverlo? Gracias.


La expresión XPath contenía un error sutil. Debería haber sido:

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

La expresión anterior estaba evaluando a un booleano, lo que explica el error de excepción. ¡Gracias por la ayuda!


La expresión dada se evalúa como booleana, no como un conjunto de nodos. Supongo que quiere verificar si ProjectName es igual al texto parametrizado. En este caso necesitas escribir

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

Esto le proporciona una lista de todos los nodos (un conjunto de nodos) que coinciden con la condición dada. Esta lista puede estar vacía, en cuyo caso la C # -Expresión en su muestra devolverá nulo.

Como una idea de último momento: puede usar la expresión xpath original, pero no con SelectSingleNode, sino con Evaluar, como este:

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


Tratar:

Node node = xmlDocument.SelectSingleNode(String.Format("//ErrorTable/ProjectName = ''{0}''", projectName)); if (node != null) { // and so on }

Editar: error tonto