拥有这样的xml文件。如何仅选择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>
提前感谢您的帮助
答案 0 :(得分:3)
//CustomProperty[contains(@href, 'parent') and substring-after(@href, 'parent') = '']
满足您的要求?该建议的一个问题是,parent
多次出现的href属性失败。
如果您的xpath处理器支持xpath 2.0,请使用aberna的建议。
出于性能原因,请务必尽可能用特定路径替换“//”轴。
答案 1 :(得分:2)
尝试使用contains选择器查找具有属性href的元素,该属性包含单词parent
//*[contains(@href, 'parent')]
或者如果你确定文字的位置&#34;父母&#34;你可以使用结尾 -
//*[ends-with(@href, 'parent')]