Java XPath local-name()
我有一个xml节点名数组Java XPath local-name(),java,xpath,Java,Xpath,我有一个xml节点名数组 searchElementsXml = new String[]{"name", "id", "version", "description", "keywords", "authorInfos/authorInfo/name", "status"}; 我找到了一个通过使用本地名称在线避免名称空间前缀的解决方案 expression = "//*[local-name()=" + searchElementsXml[j] +"]/childnode"; 如何改进表达
searchElementsXml = new String[]{"name", "id", "version", "description", "keywords", "authorInfos/authorInfo/name", "status"};
我找到了一个通过使用本地名称在线避免名称空间前缀的解决方案
expression = "//*[local-name()=" + searchElementsXml[j] +"]/childnode";
如何改进表达式字符串,以便还可以使用数组元素“authornfos/authornfo/name”
我当前的解决方案似乎不起作用,因为“/authorInfo/name”必须位于
]
的后面。最好的解决方案是编写一个简单的NamespaceContext实现,并在XPath表达式中放入限定名称
但是,如果您真的想继续这样做,可以通过将层次结构中的每个元素名称作为其自己的local-name()测试追加来生成XPath表达式:
StringBuilder exprBuilder = new StringBuilder("//");
for (String element : searchElementsXml[j].split("/")) {
exprBuilder.append("*[local-name()='" + element + "']/");
}
exprBuilder.append("childnode");
expression = exprBuilder.toString();