xpath的问题

venus224 venus224 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想得到leaf='true'的所有属于id的值。我用如下代码会出错。

DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true); // never forget this!
// String str = "<?xml version='1.0' encoding='UTF-8'?><tree><node text='君实软件' draggable='false' id='0'><node id='000000000003' text='测试1部' leaf='false' loader='[object Object]'/><node id='S0003' text='刘备' leaf='true' loader='[object Object]'/></node></tree>";//假设这个 str 中已经是一个xml格式的字符串了
String str="<?xml version='1.0'?><tree><node text='test' draggable='false' id='200826' searchParam='200826'><node id='200826000001' text='总兵都' leaf='false'><node id='A01' text='宋江' leaf='true'/><node id='200826000002' text='军机部' leaf='false' loader='[object Object]' searchParam='200826'><node id='A03' text='吴用' leaf='true' loader='[object Object]'/><node id='A04' text='公孙胜' leaf='true' loader='[object Object]'/><node id='A05' text='戴宗' leaf='true' loader='[object Object]'/><node id='A06' text='时迁' leaf='true' loader='[object Object]'/></node></node></node></tree>";
str=new String(str.getBytes("ISO8859_1"), "UTF-8");//把字符串转换为utf-8格式。
//StringBufferInputStream 继承自 InputStream 类
StringBufferInputStream in = new StringBufferInputStream(str);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(in);
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
//编译XPath表达式供以后计算使用。//BBB[@id='b1']
//xpath = "//RES[(@name = 'Count') and not(@parmType = 'DbField')]";
// XPathExpression expr = xpath.compile("//@id");
XPathExpression expr = xpath.compile("//node[(@id) and (@leaf='true')]");
//计算指定上下文中的 XPath 表达式并返回指定类型的结果。
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeValue());
}

得到的值是:

null
null
null
null
null

不知道错在哪,忘大家帮帮忙!
...全文

相关推荐

python学习问题总结之xpath根据nodename选取节点

在学习xpath语法时,作者发现关于nodename的选择存在困惑。通常理解为选取父节点的所有子节点,但在实践中选择div、ul等节点时,输出结果为空。进一步测试body和html节点,得到不一致的结果。尽管查阅资料,但nodename的解释仍然模糊。作者期待有人能解答这个问题。

飞霖雨

移动端关于xpath定位问题及常用方法

这篇博客探讨了在移动端自动化测试中如何使用XPath进行元素定位,特别是当没有ID或Name时。介绍了XPath的绝对路径和相对路径,强调了在有多个相同ID时使用XPath的重要性,并提供了不同定位场景下的示例,包括通过兄弟节点和父节点关系来定位元素。

魔都性能自动化AuricChan

XPath 安装使用教程

本文是 XPath 安装使用教程。介绍了 XPath 是用于在 XML 文档查找信息的语言及应用场景,以 VSCode 为例说明安装方法,讲解基本语法,给出 Python、Java 使用示例,还提及在浏览器调试方法、常见问题及学习资源推荐。

小奇JAVA面试

GeoServer中的XPath代码执行问题

这两天GeoServer爆出一个新的漏洞,CVE-2024-36401。参考链接:https://github.com/advisories/GHSA-6jj6-gm7p-fcvv翻译过来就是GeoServer调用的GeoTools库 API会将属性名传递给commons-jxpath库,从而执行了任意代码。commons-jxpath库之前出现过一个漏洞CVE-2022-41852就是执行任意代码的。那么几个问题,(1)XPath是干什么用的?commons-jxpath又是什么?

白帽AxisX

爬虫数据解析避坑指南:为什么你的XPath总是定位不到元素?(附lxml常见问题排查)

本文系统剖析XPath定位失败的五大核心原因:动态渲染、结构敏感性、编码问题等,并提供工业级调试方法论,包括源码比对、渐进式定位与容错处理;深入讲解lxml解析器配置优化、预编译XPath及选择性解析等性能技巧;结合豆果美食实战案例,强调相对路径、编码显式处理与结果验证。内容聚焦爬虫数据解析中的XPath工程实践与lxml高效使用。

要上进的柯同学
评论 13
收藏 已收藏
分享
返回顶部
venus224
Java EE 67,535 成员 225,843 内容