Saltar al contenido

“La expresión debe evaluarse como un conjunto de nodos”.

Mantén la atención ya que en esta crónica vas a encontrar el resultado que buscas.Esta noticia ha sido analizado por nuestros especialistas para asegurar la calidad y exactitud de nuestro post.

Solución:

Motivo del error

Según el mensaje de error, .SelectNodes() requiere que el xpath string El parámetro se evalúa como un conjunto de nodos, por ejemplo, este xpath devolverá un XmlNodeList que contiene 3 nodos:

var nodeSet = document.SelectNodes("/altinkaynak/DOVIZ");

suministro de un xpath que devuelve un solo nodo también es aceptable: el devuelto XmlNodeList solo tendrá un solo nodo:

var nodeSet = document.SelectNodes("(/altinkaynak/DOVIZ)[1]");

Sin embargo, no es posible devolver valores que no sean de nodo, como expresiones escalares:

var nodeSet = document.SelectNodes("count(/altinkaynak/DOVIZ)");

Error: la expresión debe evaluarse como un conjunto de nodos.

En lugar de XmlDocumentnecesitaría crear un navegador, compilar una expresión y evaluarla:

 var navigator = document.CreateNavigator();
 var expr = navigator.Compile("count(/altinkaynak/DOVIZ)");
 var count = navigator.Evaluate(expr); // 3 (nodes)

Si cambia su pila de análisis Xml de usar XmlDocument a un Linq to XmlXDocument hay una forma mucho más concisa de evaluar expresiones escalares:

var count = xele.XPathEvaluate("count(/altinkaynak/DOVIZ)");

Xpath mal formado

Este mismo error (Expression must evaluate to a node-set) también se devuelve con frecuencia para xpaths que no son válidos en absoluto

 var nodeSet = document.SelectNodes("Insert some really badly formed xpath here!");

Error: la expresión debe evaluarse como un conjunto de nodos.

Pregunta del OP

Tienes un error en tu Xpath. Lo que probablemente quieras es esto:

doc.SelectNodes("//ALTINKAYNAK/DOVIZ[ADI='" + dovizKuru2 + "']/ALIS") // ...

que devolverá el ALIS hijo de la DOVIZ elemento que tiene un ADI niño con un valor de dovizKuru2 (que es presumiblemente una variable para la moneda como USD)

Agradecemos que quieras auxiliar nuestro cometido mostrando un comentario o dejando una puntuación te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *