Java 使用JOOX从REST端点过滤xml数据

Java 使用JOOX从REST端点过滤xml数据,java,xml-parsing,joox,Java,Xml Parsing,Joox,我有一个REST端点,它返回这样的XML(当然,XML比我在本例中显示的3个数据块要大,比如说大约10000个数据块): 马修·甘巴德拉 XML开发人员指南 电脑类 44.95 2000-10-01 深入了解如何使用XML创建应用程序。 拉尔斯,金 夜雨 幻想 5.95 2000-12-16 一位前建筑师与企业僵尸、邪恶女巫以及她自己的童年斗争,成为世界女王。 科雷茨,伊娃 梅夫上升 幻想 5.95 2000-11-17 在英国的纳米技术社会崩溃后,年轻的幸存者为新社会奠定了坚实的基础。 j

我有一个REST端点,它返回这样的XML(当然,XML比我在本例中显示的3个数据块要大,比如说大约10000个数据块):


马修·甘巴德拉
XML开发人员指南
电脑类
44.95
2000-10-01
深入了解如何使用XML创建应用程序。
拉尔斯,金
夜雨
幻想
5.95
2000-12-16
一位前建筑师与企业僵尸、邪恶女巫以及她自己的童年斗争,成为世界女王。
科雷茨,伊娃
梅夫上升
幻想
5.95
2000-11-17
在英国的纳米技术社会崩溃后,年轻的幸存者为新社会奠定了坚实的基础。

jOOX允许对这类用例使用两种类型的查询语言:

CSS选择器 因为jOOX的灵感来自于,CSS选择器可以通过该方法使用。它们对于非常简单的查询非常有用。在内部,它们被转换为XPath,这是第二种查询语言:

XPath XPath是在XML文档中搜索内容的理想查询语言。您可以使用该方法搜索幻想书,例如:

Match match = $(xml).xpath("/catalog/book[genre=\"Fantasy\"]");
从那时起,您可以进一步处理书籍,例如打印:

$(xml).xpath("/catalog/book[genre=\"Fantasy\"]")
      .each(System.out::println);
或者将它们映射到您的
BookInfo
类型:

List<BookInfo> books = 
$(xml).xpath("/catalog/book[genre=\"Fantasy\"]")
      .map(book -> new BookInfo(
          $(book).child("price").text(BigDecimal.class),
          $(book).child("title").text(),
          $(book).child("author").text()
      ));
列出书籍=
$(xml).xpath(“/catalog/book[genre=\'Fantasy\']”)
.map(图书->新建图书信息(
$(book.child(“price”).text(BigDecimal.class),
$(book.child(“title”).text(),
$(book.child(“作者”).text()
));

是的,您可以。这是JOOX的一个基本用例。有关所需的所有详细信息,请参见项目github页面:。如果它对你不起作用,回到这里,解释你尝试了什么,什么不起作用。非常感谢卢卡斯!