在java中评估字符串上的xpath并返回结果字符串的简单方法是什么

Pab*_*jim 19 java xml xpath

一个简单问题需要一个简单的答案.

例如:

String xml = "<car><manufacturer>toyota</manufacturer></car>";
String xpath = "/car/manufacturer";
assertEquals("toyota",evaluate(xml, xpath));
Run Code Online (Sandbox Code Playgroud)

如何以简单易读的方式编写evaluate方法,该方法适用于任何给定的格式良好的xml和xpath.

显然,有很多方法可以实现,但大多数人似乎非常冗长.

我缺少的任何简单方法/库可以实现这一目标吗?

对于返回多个节点的情况,我只想要字符串表示.

bdo*_*han 37

在这里,您可以使用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))));
    }

}
Run Code Online (Sandbox Code Playgroud)


van*_*nje 7

对于这个用例,XMLUnit库可能非常适合:http: //xmlunit.sourceforge.net/userguide/html/index.html#Xpath%20Tests

它提供了一些额外的断言方法.

例如:

assertXpathEvaluatesTo("toyota", "/car/manufacturer",
    "<car><manufacturer>toyota</manufacturer></car>");
Run Code Online (Sandbox Code Playgroud)