2016-11-25 17 views
0

XPathが新しく、特定の子要素が存在する場合、親要素の属性値を取得する方法がわかりません。 <oxygen>要素がプライマリ内に存在している場合は、私のXPathは要素<planet>から@name属性を取得するにはどうあるべきか子要素が存在する場合、Xpath内の親要素の属性値を取得する方法は?

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

答えて

-1

正しい答えは現在のXPath axisによって異なります。あなたの現在の軸が要素の@name属性にアクセスするためのXPath式<oxygen>であれば<planet>は次のようになります。

../../@name 

またはXSLT式にカプセル化:あなたが見て述語を使用することができます

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

木を下ろす。これにより、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')) 
+0

http://www.freeformatter.com/xpath-tester.html#ad-output – buttowski

関連する問題