xml - XPath 中的 //*[*] 和 //*[.] 有什么区别?
问题描述
我试图了解两者之间的区别
//*[.] and //*[*]
这些返回不同数量的元素。
还有我可以使用点而不是属性的地方
//tag[@Attribute="value"]
不只是在文本的情况下?语法是什么样的?因为我试过
//tag[@.="value"] and //tag[.="value"]
最后一个只在文本的情况下有效,但不能代替大小写
//tag[@id="value"]
例如,那么我什么时候可以更改点而不是属性?
解决方案
//*[.]
将选择所有元素。它相当于//*
。
//*[*]
将选择至少有一个子元素的所有元素。
//tag[@.="value"]
在语法上无效。
//tag[.="value"]
将选择字符串值等于tag
的所有元素。例如,对于这个 XML,value
<tag id="r">
<tag id="a">value</tag>
<tag id="b">val<br/>ue</tag>
<tag id="c"><span>val</span><span>ue</span></tag>
<tag id="f"> value</tag>
<tag id="g">Value</tag>
</tag>
//tag[.="value"]
会选择
<tag id="a">value</tag>
<tag id="b">val<br/>ue</tag>
<tag id="c"><span>val</span><span>ue</span></tag>
推荐阅读
- python - 发生异常:在 sql alchemy 1.4 中进行连接查询时 MissingGreenlet
- rust - Rust:如何修复借来的价值并没有足够长的时间
- javascript - Javascript keydown 事件未在某些旧键盘和移动设备上检测波斯字符 keyCode
- algorithm - 找到一个平面剪裁具有最大交叉面积/体积比的网格
- node.js - 为什么验证函数中的令牌参数在 jwt 身份验证中显示错误?
- flowgear - Flowgear中如何处理QuickMap函数中的数组
- sql - 仅在最大日期而不是在组的其他条目中显示具有特定值的组
- c# - 如何使用 asp.net core 在模型类中创建通用属性
- reactjs - axios调用期间出现400个错误请求
- spring-boot - 如何使用 Springboot 和 java GRPC 进行 SSL/TLS