从已编译的javax.xml.xpath.XPathExpression对象中打印xpath表达式

时间:2016-05-23 06:04:30

标签: xml xpath

是否可以从已编译的xPathExpression对象中打印字符串模式?

在某个时间点编译表达式的情况可能需要它。但是稍后会多次评估。

1 个答案:

答案 0 :(得分:0)

XPathExppression没有办法做到这一点。 (XPathExppression.toString也没有为默认的JDK实现返回任何有意义的内容。)

如果你控制表达式的创建,你可以创建一个包装类来保存表达式字符串,并在调用toString()时返回该字符串。

String exprString = ...;
XPathExpression expr = xpath.compile(exprString);
WrapperXPathExpr proxyExpr = new WrapperXPathExpr(expr, exprString);

并且包装类看起来像

public class WrapperXPathExpr implements XPathExpression {
    private XPathExpression expr_;
    private String exprString_;

    public WrapperXPathExpr(XPathExpression expr, String exprString) {
         expr_ = expr;
         exprString_ = exprString;
    }

    public Object evaluate(Object item, QName returnType) throws XPathExpressionException {
         return expr_.evaluate(item, returnType);
    }

    ...

    public String toString() {
        return exprString_;
    }
}