【问题标题】:How to get the attribute value of a parent element in Xpath if Child element exists?如果 Child 元素存在,如何获取 Xpath 中父元素的属性值?
【发布时间】:2016-11-25 20:09:26
【问题描述】:

我是 XPath 的新手,如果存在特定的子元素,我不确定如何获取父元素的属性值。

<planet name="Earth" star="Sun">
      <primary>
            <oxygen>20.95%</oxygen>
            <water>70.8%</water>
      </primary>
</planet>

如果 &lt;oxygen&gt; 元素存在于主元素中,我的 XPath 应该是什么才能从元素 &lt;planet&gt; 获取 @name 属性?

【问题讨论】:

    标签: xml xpath


    【解决方案1】:

    您可以使用谓词向下查看树。这将选择所有具有primary/oxygen 子元素的planet 元素。我添加了一个根元素,假设它隐藏在某个文档中。

    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'))
    

    【讨论】:

      【解决方案2】:

      正确答案取决于您当前的XPath axis。因此,如果您当前的轴是 &lt;oxygen&gt;,那么访问元素 &lt;planet&gt;@name 属性的 XPath 表达式将是:

      ../../@name
      

      或封装在 XSLT 表达式中:

      <xsl:value-of select="../../@name" />
      

      【讨论】:

        猜你喜欢
        • 2021-08-04
        • 1970-01-01
        • 1970-01-01
        • 2021-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多