Xpath包含子节点上返回父节点的查询


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>
               .....

代码在拉回匹配搜索词的列时工作得很好,但是我希望它拉回整个表,然后将其打印出来。这将为我提供更有价值的信息,包括输入它的人的日期戳我尝试了各种各样的事情,试图从节点(I)中获得父节点,然后将。getchildnodes放入另一个节点,但根本不起作用。我也试过添加/..在xpath的末尾text()之前,看看它是否会给我返回父元素,但最终只给了我根标签。我想我有点接近了,也许不是,我不知道,但如果有人能帮助我,我会非常感激,我已经被困在这个问题上一段时间了。

认为您想使用..而不是//

例如,要获得td值为xxx的所有table,您可以使用

//table/tr/td[text() = 'xxx']/../..

最新更新