Select 通过 xpath 只知道元素属性的结尾

Select by xpath knowing only ending of element's attribute

有这样的xml文件。我如何才能 select 只有那个 href 属性以 parent 结尾的标签,如下面的第三个元素。

按位置确定 elem = tree.findall('{*}CustomProperty')[2] 不适合,因为某些文档可能只有一个 parent href,其他 5-10 个和第三个可能根本没有这样的 href。

我倾向于使用 xpath,但不知道如何让 xpath 搜索属性匹配的结尾。

此外 xpath 不是必须的,我很乐意使用适合我目的的任何方式

那么我怎样才能得到 CustomProperty 元素,它的 href 属性以单词 parent 结尾?

 <CustomProperty href="urn:1653267:643562dafewq:cs:46wey5ge:234566">urn:1653267:643562dafewq:cs:46wey5ge:234566:ss</CustomProperty>
 <CustomProperty href="urn:1653267:643562dafewq:cs:46wey5ge:234566">urn:1653267:643562dafewq:cs:46wey5ge:234566:ss</CustomProperty>
 <CustomProperty href="urn:1653267:643562dafewq:cs:46wey5ge:234566:parent">urn:1653267:643562dafewq:cs:46wey5ge:234566:ss</CustomProperty>

提前感谢您的帮助

尝试使用包含选择器查找属性 href 包含单词 parent

的元素
//*[contains(@href, 'parent')]

或者如果您确定文本的位置 "parent" 您可以使用 ends-with

//*[ends-with(@href, 'parent')]

是否

//CustomProperty[contains(@href, 'parent') and substring-after(@href, 'parent') = '']

满足您的要求?该建议的一个问题是它对于 parent 出现不止一次的 href 属性失败。

如果您的 xpath 处理器支持 xpath 2.0,请使用 aberna 的建议。

出于性能原因,请记住尽可能用特定路径替换“//”轴。