1
我需要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()”);
这里的正确表达式是什么? “// $ tag/text()”??
太谢谢你了。这就是我一直在寻找的东西。 – Qajussi
你能解释一下*是为了什么吗? – Qajussi
如果我想要做这样的事情(// tag1/tag2/text()),我需要在tag2之前像这样// * [name()= $ tag1]/* [nam()= $ tag2 ]/文本() – Qajussi