xml - 如何使用 XPath contains()
问题描述
我的 XML
<r>
<ul>
<li>ModelA</li>
<bi>Foo</bi>
</ul>
<ul>
<li>ModelB</li>
<bi>boo</bi>
</ul>
</r>
对于特定节点值,我想提取后继节点的值。
示例当 li = ModelA 获得 bi 的值为 Foo
我的 Xpath://ul[li[contains(.,'ModelA')]]
解决方案
您的 XPath 不包含bi
,因此它不会选择bi
-Node。
从...开始
//ul/bi
选择bi
-node。现在在方括号中添加条件。第一个条件是“父节点有一个-子节点li
:
//ul/bi[../li]
第二个条件是:li
-node 包含文本:
//ul/bi[../li[contains(.,'ModelA')]]
bi
但是,如果有多个节点,这可能无法满足您的要求。如果您真的bi
只需要下一个节点,@ Jack Fleeting的答案可能是最好的。
推荐阅读
- python - 将一起出现在单独列表中的项目组合在一起
- c# - 如何在我的 API 中对 EWS 应用程序中的用户进行身份验证
- ruby - 为什么字符串 '3' 在范围 ('0'...'10') 的 case 语句中不匹配?
- node.js - Firebase 同步将文档写入 Firestore 的后台作业
- for-loop - Jinja2 - 在每次出现的循环中添加一些东西,而不是最后一个
- powershell - 为什么 Clear-Variable 会降低内存使用率而重用变量却不会?
- flutter - Flutter:作为列表视图元素的盒子/硬币容器
- r - R geom density ridges-同时添加均值和中值线
- sql - UPDATE TABLE SQL 缺少表达式错误
- amazon-web-services - 如何使用 AWS CDK 为 Lambda 集成设置 AWS API Gateway 超时值?