You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Java XPath返回数字?Android测试场景下的实现疑问

问题解答
  • 异常原因:你的XPath表达式写法有误。/html/body/count(hr)是试图在<body>节点下查找名为count的子节点(并传入hr作为参数),这不符合XPath语法——count()是标准函数,不能作为路径节点的一部分,所以解析器会报错“Unknown nodetype: count”。

  • Java XPath能否返回数字?:可以,JAXP(Java自带的XPath API)完全支持返回数值类型,而且Android平台的内置XML解析器也兼容这个功能,不需要依赖Saxon等第三方库。

  • 正确实现方式:

    1. 修正XPath表达式:将函数放在最外层,正确写法为count(/html/body/hr),用于统计<body>下所有<hr>节点的数量。
    2. 使用XPath.evaluate()方法时,指定返回类型为XPathConstants.NUMBER,直接获取数值结果。

    示例代码:

    // 初始化XPath实例
    XPath xpath = XPathFactory.newInstance().newXPath();
    // 正确的统计表达式
    String correctExpr = "count(/html/body/hr)";
    // 执行表达式,指定返回数值类型
    Double hrCount = (Double) xpath.evaluate(correctExpr, yourXmlDocument, XPathConstants.NUMBER);
    // 转换为整数用于断言
    int hrCountInt = hrCount.intValue();
    // 后续断言逻辑
    // assertEquals(expectedCount, hrCountInt);
    
  • Android适配说明:Android内置的javax.xml.xpath包支持XPath 1.0的标准函数(包括count()),完全满足你的测试断言需求,不会破坏构建流程。

内容的提问来源于stack exchange,提问作者Phlip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:40:29