我正在使用以下XPath查询来搜索书籍作者的姓名,并在与作者匹配时返回书名。
String rawXPath = String.format("//book[author= '%s']/bookname/text()", authorBook);
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr
= xpath.compile(rawXPath);
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeValue());
}
如何修改搜索以便我可以搜索特定单词的内容..... / content(节点名称)。
示例:xml内容变量中的字符串:“这本书包含了我们祖先的荣耀和历史。它对我们日常生活的影响是巨大的。”
现在我想搜索“每日”这个词。如果它每天匹配,它将重新调用用户想要的书名/作者名称watever。
由于
答案 0 :(得分:2)
使用contains()
Xpath功能。
//book[contains(content, '%s')]/bookname
取决于您输入XML的结构
答案 1 :(得分:1)
你想要:
//book[contains(content, $searchString)
and
author = $wantedAuthor
]
/bookname/text()
这将选择作为text()
元素的子元素的bookname
个节点,该元素是文档中任何book
元素的子元素,其content
子元素的字符串值包含字符串(包含在)$searchString
中,其author
元素的字符串值与$wantedAuthor
变量中包含的字符串相同
在此Xpath表达式中,变量需要由特定字符串替换。此外,它假定元素content
是book
的孩子。
我不了解Java,但假设最终的Java代码如下所示:
String.format("//book[contains(content, '%s')
and
author= '%s']/bookname/text()",
searchString, authorBook);
答案 2 :(得分:0)
如果你的xml看起来像这样:
<book>
<author> Author Name </author>
<description> This book contains the glory and history of our forefathers. And the impact of it in our daily life is immense.</description>
</book>
然后你可以尝试:
String rawXPath = "//book//*[contains(text(),\"daily\")]";
表示“给任何儿童持有包含'每日'一词的文字的任何书籍元素。
我希望能帮到你!干杯!
答案 3 :(得分:0)
现在,如果你想搜索一个节点内的一个术语你可以这样做 -
String rawXPath = String.format("//book/title[contains(innerItem, '%s')]/type/text()", value);
为每个节点添加一个反斜杠,并在。
中添加节点名称和ur