子ノード "title 50"の親ノードを取得する必要があります
現時点で私は使用しています
//*[title="50"]
どうすればその親を取得できますか?結果はstore
ノードになります。
<?xml version="1.0" encoding="utf-8"?>
<d:data xmlns:d="defiant-namespace" d:mi="23">
<store d:mi="22">
<book price="12.99" d:price="Number" d:mi="4">
<title d:constr="String" d:mi="1">Sword of Honour</title>
<category d:constr="String" d:mi="2">fiction</category>
<author d:constr="String" d:mi="3">Evelyn Waugh</author>
</book>
<book price="8.99" d:price="Number" d:mi="9">
<title d:constr="String" d:mi="5">Moby Dick</title>
<category d:constr="String" d:mi="6">fiction</category>
<author d:constr="String" d:mi="7">Herman Melville</author>
<isbn d:constr="String" d:mi="8">0-553-21311-3</isbn>
</book>
<book price="8.95" d:price="Number" d:mi="13">
<title d:constr="String" d:mi="10">50</title>
<category d:constr="String" d:mi="11">reference</category>
<author d:constr="String" d:mi="12">Nigel Rees</author>
</book>
<book price="22.99" d:price="Number" d:mi="18">
<title d:constr="String" d:mi="14">The Lord of the Rings</title>
<category d:constr="String" d:mi="15">fiction</category>
<author d:constr="String" d:mi="16">J. R. R. Tolkien</author>
<isbn d:constr="String" d:mi="17">0-395-19395-8</isbn>
</book>
<bicycle price="19.95" d:price="Number" d:mi="21">
<brand d:constr="String" d:mi="19">Cannondale</brand>
<color d:constr="String" d:mi="20">red</color>
</bicycle>
</store>
</d:data>
親ノードの名前と一緒に parent
axes を使用します。
//*[title="50"]/parent::store
このXPathは、それがstore
である場合にのみ親ノードを選択します。
しかし、あなたはこれらのうちの一つを使うこともできます。
//*[title="50"]/parent::*
//*[title="50"]/..
これらのxpathは任意の親ノードを選択します。そのため、ドキュメントが変更された場合は、ノードが予期したノードでなくても、常にノードを選択します。
編集
与えられた例では、親は自転車ですが、親の親は店です。
それは上昇しますか?
いいえ、ストアが//*[title="50"]
に一致するノードの親である場合にのみストアを選択します。
そうでない場合、そのような場合に上昇する方法があり、そのような親がない場合にNoneを返すか?
はい、ancestor
軸を使用できます
//*[title="50"]/ancestor::store
これはstore
sである//*[title="50"]
と一致するノードのすべての先祖を選択します。例えば。
<data xmlns:d="defiant-namespace" d:mi="23">
<store mi="1">
<store mi="22">
<book price="8.95" d:price="Number" d:mi="13">
<title d:constr="String" d:mi="10">50</title>
<category d:constr="String" d:mi="11">reference</category>
<author d:constr="String" d:mi="12">Nigel Rees</author>
</book>
</store>
</store>
</data>
別の方法として、ancestor
を使うことができます。
//*[title="50"]/ancestor::store
それは祖父母や偉大な偉大な祖父母さえも得ることができるのでそれはparent
よりも強力です
表現の最後に2つのドットを使うこともできます。この例を参照してください。
//*[title="50"]/..
これは私の場合はうまくいきます。その中から意味を引き出せるといいのですが。
//div[text()='building1' and @class='wrap']/ancestor::tr/td/div/div[@class='x-grid-row-checker']