locator - ¿Qué es una forma sencilla en java para evaluar una xpath en una cadena y devolver una cadena de resultado
xpath selenium examples (3)
Aquí tienes, lo siguiente se puede hacer con Java SE:
import java.io.StringReader;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import org.xml.sax.InputSource;
public class Demo {
public static void main(String[] args) throws Exception {
String xml = "<car><manufacturer>toyota</manufacturer></car>";
String xpath = "/car/manufacturer";
XPath xPath = XPathFactory.newInstance().newXPath();
assertEquals("toyota",xPath.evaluate(xpath, new InputSource(new StringReader(xml))));
}
}
Una respuesta simple necesaria para una pregunta simple.
Por ejemplo:
String xml = "<car><manufacturer>toyota</manufacturer></car>";
String xpath = "/car/manufacturer";
assertEquals("toyota",evaluate(xml, xpath));
¿Cómo puedo escribir el método de evaluación de manera simple y legible que funcione para cualquier xml y xpath bien formado?
Obviamente, hay muchas maneras en que esto se puede lograr, pero la mayoría parece muy detallada.
¿Alguna de las formas simples que me faltan / bibliotecas que pueden lograr esto?
Para los casos en que se devuelven varios nodos, solo quiero la representación de cadena de esto.
Para este caso de uso, la biblioteca XMLUnit puede ser un ajuste perfecto: http://xmlunit.sourceforge.net/userguide/html/index.html#Xpath%20Tests
Proporciona algunos métodos de afirmación adicionales.
Por ejemplo:
assertXpathEvaluatesTo("toyota", "/car/manufacturer",
"<car><manufacturer>toyota</manufacturer></car>");
Usando la clase Xml de https://github.com/guppy4j/libraries/tree/master/messaging-impl :
Xml xml = new Xml("<car><manufacturer>toyota</manufacturer></car>");
assertEquals("toyota", xml.get("/car/manufacturer"));