Java 带有incasesensitive的XPath查询

Java 带有incasesensitive的XPath查询,java,xml,xpath,Java,Xml,Xpath,我有一个这样的XML <Authors> <Author name='Some Author'> <Book>B1</Book> <Book>B2</Book> <Book>B3</Book> </Author> </Authors> translate函数对字符串进行操作,因此它首先将其参数强制转换为字符串,然后转换结果Book在您使用它的上下文中,有一个由三个节点组成的节

我有一个这样的XML

<Authors>
<Author name='Some Author'>
<Book>B1</Book>
<Book>B2</Book>
<Book>B3</Book>
</Author>
</Authors>

translate
函数对字符串进行操作,因此它首先将其参数强制转换为字符串,然后转换结果
Book
在您使用它的上下文中,有一个由三个节点组成的节点集,节点集的字符串值是其第一个成员的值,因此您的表达式作为一个整体意味着“查找第一个Book子项为b1(不区分大小写)的所有作者”

相反,你需要的是

Author[Book[translate(.,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='b1']]

“查找所有具有值为b1(不区分大小写)的Book child的作者”

函数对字符串进行操作,因此它首先将其参数强制转换为字符串,然后转换结果
Book
在您使用它的上下文中,有一个由三个节点组成的节点集,节点集的字符串值是其第一个成员的值,因此您的表达式作为一个整体意味着“查找第一个Book子项为b1(不区分大小写)的所有作者”

相反,你需要的是

Author[Book[translate(.,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='b1']]

“查找所有具有值为b1(不区分大小写)的Book child的作者”

能否发布您正在使用的代码?XPathFactory XPathFactory=XPathFactory.newInstance();XPath=xPathFactory.newXPath();XPathExpression XPathExpression=xPath.compile(“作者/auother[translate(Book,'abcdefghjjklmnopqrstuvxyz','abcdefghjjklmnopqrstuvxyz')='b2”);ret_nodelist=(nodelist)XPathExpression.evaluate(doc,XPathConstants.NODESET);你能发布你正在使用的代码吗?XPathFactory XPathFactory XPathFactory=XPathFactory.newInstance();XPath XPath=xPathFactory.newXPath();XPathExpression XPathExpression=XPath.compile(“作者/作者[翻译(书,'ABCDEFGHIjklmnopqrstuvxyz','ABCDEFGHIjklmnopqrstuvxyz')='b2”);ret_nodelist=(节点列表)XPathExpression.evaluate(doc,XPathConstants.NODESET);