xpath - 选择孩子但排除特定的孩子
问题描述
我有这个 XML 结构:
<?version="1.0" encoding="ISO-8859-1" ?>
<feed xmlns="http://www.w3.org/2005/Atom" >
<companyinfo>
<addresses>
<address type="mailing" >
<city>NEW YORK</city>
</address>
<address type="business" >
<city>NEW YORK</city>
</address>
<node1>node1</node1>
<node2>node2</node2>
<node3>nod3</node3>
</addresses>
</companyinfo>
</feed>
我想选择所有子级,<companyinfo>
但从结果中排除addresses
。这意味着我的选择变成了所有<nodeX>
.
在阅读并查看相关线程this和this之后,我想出了以下内容:
//companyinfo[not(addresses)]
# 不起作用
//companyinfo/*[not(addresses)]
# 不起作用
我误解了它的not(expr)
工作原理吗?
我实际上是在尝试选择companyinfo
IF addresses
节点不存在吗?
解决方案
您的 xml 无效,但如果您修复它(和错字),这个表达式虽然令人费解,
//*[local-name()="companyinfo"]//*[local-name()="addresses"]//*[not(ancestor-or-self::*[local-name()="address"])]
应该输出
node1
node2
node3
推荐阅读
- python - 将文本文件中的第一行与其他行进行比较以查看时间差异
- .net - using docker-compose.debug.yml from Visual studio for debugging purposes
- javascript - Materialize sidenav 可折叠在单独的 JS 文件中不起作用
- regex - 优化正则表达式“展开循环”模式
- python - Django 和多租户哪些应用程序必须共享,哪些应用程序必须是公共的
- android - Firebase 实时数据库 setValue() 不工作
- flutter - Flutter Bloc:返回自定义构造函数对象作为状态
- deep-learning - 为什么他们在更快的 RCNN 中参数化锚框的坐标?
- ruby-on-rails - Cron 选项卡无法通过每当 gem 找到正确的 Ruby 版本
- postgresql - 对于某些列 n_distinct 具有负值