我是XPath的新手,如果存在特定的子元素,则不确定如何获取父元素的属性值。
<planet name="Earth" star="Sun">
<primary>
<oxygen>20.95%</oxygen>
<water>70.8%</water>
</primary>
</planet>
如果@name
元素存在于主要内容中,那么我的XPath应该从元素<planet>
获取<oxygen>
属性?
答案 0 :(得分:2)
您可以使用谓词向下看树。这将选择具有planet
个子元素的所有primary/oxygen
元素。我添加了一个根元素,假设它隐藏在某个文档中。
import lxml.etree
doc = lxml.etree.fromstring("""<root>
<planet name="Earth" star="Sun">
<primary>
<oxygen>20.95%</oxygen>
<water>70.8%</water>
</primary>
</planet>
</root>""")
print(doc.xpath('planet[primary/oxygen]/@name'))
答案 1 :(得分:-1)
正确答案取决于您当前XPath axis。因此,如果当前轴为<oxygen>
,则访问元素@name
的{{1}}属性的XPath表达式将为:
<planet>
或封装在XSLT表达式中:
../../@name