如何解决使用XPath查询搜索String的一部分
| 我正在使用以下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内容变量中的字符串:\“这本书包含了我们祖先的荣耀和历史。它在我们日常生活中的影响是巨大的。”
现在,我要搜索单词“ daily”。如果每天匹配,它将使我重新调整用户想要的书名/作者名。
谢谢
解决方法
使用
contains()
Xpath函数。
//book[contains(content,\'%s\')]/bookname
取决于您输入XML的结构
,你要:
//book[contains(content,$searchString)
and
author = $wantedAuthor
]
/bookname/text()
这将选择作为文档中任何book
元素的子元素的bookname
元素的子元素的text()
节点,其whose7ѭ子元素的字符串值包含$searchString
字符串(包含在其中)和author
元素的字符串值相同作为contained10ѭ变量(包含在其中的字符串)
在此Xpath表达式中,变量需要用特定的字符串替换。另外,假定元素“ 7”是“ 6”的子元素。
我不懂Java,但假设最终的Java代码如下所示:
String.format(\"//book[contains(content,\'%s\')
and
author= \'%s\']/bookname/text()\",searchString,authorBook);
,如果您的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\\\")]\";
意思是“给予任何书本元素任何孩子拥有包含单词'daily \'的文本。
希望对您有所帮助!干杯!
,现在,如果您还想搜索一个节点内的某个术语,则可以执行以下操作:
String rawXPath = String.format(\"//book/title[contains(innerItem,\'%s\')]/type/text()\",value);
为每个节点以及节点名称和ur输入一个反斜杠。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。