2

JavaDoc中:返回:作为评估表达式并将结果转换为字符串的结果的字符串。

/**
 * ...
 * ...
 * @return The <code>String</code> that is the result of evaluating the expression and converting the result to a 
 *   <code>String</code>.
 * ...
 * ...
 */
String javax.xml.xpath.XPathExpression.evaluate(Object item)

问题是,如果表达式一无所获,这里的合同是什么有点模糊。null 在所有实现中都是有效/无效的返回吗?返回 API 在哪里定义?在 JSR 中?

4

2 回答 2

3

如果我没记错的话,XPath 中没有 null 这样的东西。我的猜测是它返回空字符串。

更新:快速浏览一下XPath 2.0XPath 2.0 函数规范可以证实这种感觉。

于 2009-12-31T12:47:30.640 回答
1

这可能不是预期的答案。

<types>
    <type id="1">
        <href>aaa</href>
    </type>
</types>

假设您编写了一个方法 finds @idby href

Double findIdByHref(final String href) {
    evaluate("/:types/:type[:href='bbb']/@id", NUMBER);
}

此方法返回0not nullfor bbbas href

final Double id = findByHref("bbb"); // not null

我不得不这样修改

Double findIdByHref(final String href) {
    final Node node = evaluate("/:types/:type[:href='bbb']", NODE);
    if (node == null) {
        return null;
    }
    return evaluate("@id", node);
}
于 2012-07-19T05:30:15.963 回答