Что такое простой способ в java для оценки xpath в строке и возврата строки результата

17

Простой ответ на простой вопрос.

Например:

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

Как я могу написать метод оценки простым и понятным способом, который будет работать для любого заданного корректного xml и xpath.

Очевидно, что это может быть достигнуто, но большинство кажется очень многословным.

Любые простые способы, которых я не вижу / библиотеки, которые могут это сделать?

В случаях, когда возвращаются несколько узлов, я просто хочу, чтобы это было строковое представление.

    
задан Pablojim 16.11.2010 в 19:16
источник

3 ответа

36

Здесь вы можете сделать следующее с 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))));
    }

}
    
ответ дан Blaise Doughan 16.11.2010 в 19:33
источник
7

В этом случае библиотека XMLUnit может быть идеально подходит: Ссылка

Он предоставляет некоторые дополнительные методы assert.

Например:

assertXpathEvaluatesTo("toyota", "/car/manufacturer",
    "<car><manufacturer>toyota</manufacturer></car>");
    
ответ дан vanje 16.11.2010 в 22:29
источник
0

Использование класса Xml из Ссылка :

Xml xml = new Xml("<car><manufacturer>toyota</manufacturer></car>");
assertEquals("toyota", xml.get("/car/manufacturer"));
    
ответ дан odoepner 03.09.2014 в 03:39
источник