A simple answer needed to a simple question.
For example:
String xml = "<car><manufacturer>toyota</manufacturer></car>";
String xpath = "/car/manufacturer";
assertEquals("toyota",evaluate(xml, xpath));
How can I write the evaluate method in simple and readable way that will work for any given well-formed xml and xpath.
Obviously there are loads of ways this can be achieved but the majority seem very verbose.
Any simple ways I'm missing/libraries that can achieve this?
For cases where multiple nodes are returned I just want the string representation of this.
expression - The XPath expression. source - The InputSource of the document to evaluate over. Returns: The String that is the result of evaluating the expression and converting the result to a String .
It defines a language to find information in an XML file. It is used to traverse elements and attributes of an XML document.
Here you go, the following can be done with 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))));
}
}
For this use case the XMLUnit library may be a perfect fit: http://xmlunit.sourceforge.net/userguide/html/index.html#Xpath%20Tests
It provides some additional assert methods.
For example:
assertXpathEvaluatesTo("toyota", "/car/manufacturer",
"<car><manufacturer>toyota</manufacturer></car>");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With