Xpath 包含子节点到 return 父节点的查询
Xpath Contains Query on child node to return Parent node
String query = null;
XPathExpression expr;
Object Result = null;
expr = xpath.compile("//table/column[contains(translate(text(),'ABCDEFGHIJKLMNAOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),'"+query+"')]//text()");
result = expr.evaluate(doc, XpathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i<nodes.getLength(); i++){
System.out.println(nodes.item(i).getParentNode().getNodeName() + "" + nodes.item(i).getNodeValue());
}
你好,所以我想先说我是 xpath 的新手,而且是 java 的新手。我正在尝试为这个大 xml 文件创建一个查询界面,这是我到目前为止所想出的。 xml 文件充满了日志,它的设置有点像这样....
<database>
<table>
<column1>
<column2>
<column3>
.....
该代码可以很好地拉回与搜索词匹配的列,但我希望它拉回整个 table 然后打印出来。这将给我更多有价值的信息,包括输入它的人的日期戳等......我尝试了各种尝试从节点(i)获取父节点然后将.getchildnodes放入另一个节点列表但是没有工作。我还尝试在 text() 之前的 xpath 末尾添加 /.. 以查看它是否会让我返回父级但最终只是以某种方式给了我根标签。我想我有点接近,也许不是我不知道,但如果有人能提供帮助,我将不胜感激,我已经坚持了一段时间了。
我认为您想使用..
而不是//
例如,要获得 td
值为 xxx
的所有 table
,您可以使用
//table/tr/td[text() = 'xxx']/../..
String query = null;
XPathExpression expr;
Object Result = null;
expr = xpath.compile("//table/column[contains(translate(text(),'ABCDEFGHIJKLMNAOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),'"+query+"')]//text()");
result = expr.evaluate(doc, XpathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i<nodes.getLength(); i++){
System.out.println(nodes.item(i).getParentNode().getNodeName() + "" + nodes.item(i).getNodeValue());
}
你好,所以我想先说我是 xpath 的新手,而且是 java 的新手。我正在尝试为这个大 xml 文件创建一个查询界面,这是我到目前为止所想出的。 xml 文件充满了日志,它的设置有点像这样....
<database>
<table>
<column1>
<column2>
<column3>
.....
该代码可以很好地拉回与搜索词匹配的列,但我希望它拉回整个 table 然后打印出来。这将给我更多有价值的信息,包括输入它的人的日期戳等......我尝试了各种尝试从节点(i)获取父节点然后将.getchildnodes放入另一个节点列表但是没有工作。我还尝试在 text() 之前的 xpath 末尾添加 /.. 以查看它是否会让我返回父级但最终只是以某种方式给了我根标签。我想我有点接近,也许不是我不知道,但如果有人能提供帮助,我将不胜感激,我已经坚持了一段时间了。
我认为您想使用..
而不是//
例如,要获得 td
值为 xxx
的所有 table
,您可以使用
//table/tr/td[text() = 'xxx']/../..