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 XmlDocument
necesitarí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 Xml
XDocument
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 xpath
s 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.