XPath表达式查找存在的所有元素

时间:2016-07-07 17:26:21

标签: java xpath

我需要一个XPath表达式的帮助,该表达式匹配每个元素,无论它们在哪里。这个

for (String tag:tags) {
  StringBuffer expression = new StringBuffer("//" + tag + "/text()");}
}

这匹配了一切,但现在我需要对可能的XPath注入应用修复。所以我试图使用XPathVarableResolver来实现它。

for (String tag:tags) {
  MapVariableResolver vr = new MapVariableResolver();
  vr.addVariable(new QName(null, "tag"), tag);
  xPath.setXPathVariableResolver(vr);
  StringBuffer expression = new StringBuffer("//$tag/text()");}
  XPathExpression expr = xPath.compile(expression.toString());
  nodeList = (NodeList) expr.evaluate(doc,XPathConstants.NODESET);
}

但是我遇到了XPath异常的异常。 javax.xml.transform.TransformerException:在'/'或'//'标记后面需要一个位置步骤。

StringBuffer expression = new StringBuffer(“// $ tag / text()”);

这里的正确表达是什么? “// $标签/文本()” ??

1 个答案:

答案 0 :(得分:1)

假设$tag存储为XPath字符串变量,您可以尝试通过比较其名称来过滤元素,如下所示:

StringBuffer expression = new StringBuffer("//*[name()=$tag]/text()");