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

2022-09-02 08:56:40

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

例如:

String xml = "<car><manufacturer>toyota</manufacturer></car>";
String xpath = "/car/manufacturer";
assertEquals("toyota",evaluate(xml, xpath));

我如何以简单易读的方式编写评估方法,该方法适用于任何给定的格式正确的xml和xpath。

显然,有很多方法可以实现这一点,但大多数似乎非常冗长。

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

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


答案 1

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

}

答案 2

对于此用例,XMLUnit 库可能是一个完美的选择:http://xmlunit.sourceforge.net/userguide/html/index.html#Xpath%20Tests

它提供了一些其他断言方法。

例如:

assertXpathEvaluatesTo("toyota", "/car/manufacturer",
    "<car><manufacturer>toyota</manufacturer></car>");

推荐