查找以特定模式开头的属性名称
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找以特定模式开头的属性名称相关的知识,希望对你有一定的参考价值。
我希望找到与某个模式匹配的元素的所有属性。
所以对于一个元素
<element s2="1" name="aaaa" id="1" />
<element s3="1" name="aaaa" id="2" />
我希望能够找到以's'开头的所有属性(为第一个元素返回s1的值,为第二个元素的值返回s3)。
如果这超出了xpath的能力,请告诉我。
使用:
element/@*[starts-with(name(), 's')]
此XPath表达式选择名称以字符串's'
开头的所有属性节点,它们是名为element
的元素的属性,这些元素是当前节点的子节点。
starts-with()
是XPath 1.0中的标准函数
element/@*[substring(name(), 1,1) = "s"]
将匹配任何以's'开头的属性。
函数starts-with()
可能看起来比使用substring()
更好
我已经使用Python中的lxml.html模块测试了@Dimitre-Novatchev和@Ledhund的给定答案。
element/@*[starts-with(name(), 's')]
和element/@*[substring(name(), 1,1) = "s"]
都只返回s2和s3的值。您将无法知道哪个值属于哪个属性。
我认为在实践中我会更感兴趣的是找到包含以特定字符开头的名称属性而不仅仅是它们的值的元素本身。
要实现这一点非常简单,只需在最后添加/..
,
element/@*[starts-with(name(), "s")]/..
要么
element/@*[starts-with(name(), "s")]/parent::*
要么
element/@*[starts-with(name(), "s")]/parent::node()
以上是关于查找以特定模式开头的属性名称的主要内容,如果未能解决你的问题,请参考以下文章