Мне нужна помощь с выражением 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