2012-02-16 3 views
5

いくつかの属性を持つ親を持つノードを選択する方法。 例:すべてのexpiration_time要素を選択するにはXpathとは何ですか? 次のXMLでは、状態要素に属性がある場合はエラーが発生します。それ以外の場合はprobsはありません。いくつかの属性を持つ親を持つノードを選択する方法

おかげ

<lifecycle> 
    <states elem="0"> 
    <expiration_time at="rib" zing="chack">08</expiration_time> 
    </states> 
    <states elem="1"> 
    <expiration_time at="but">4:52</expiration_time> 
    </states> 
    <states elem="2"> 
    <expiration_time at="ute">05:40:15</expiration_time> 
    </states> 
    <states elem="3"> 
    <expiration_time>00:00:00</expiration_time> 
    </states> 

</lifecycle> 

答えて

4

states/expiration_time[../@elem = "0"]?これは、XMLの最上位要素の孫であるすべてのexpiration_time要素を選択

/*/*/expiration_time 

+0

この表記は、属性があるものと等しい特定の親からのすべての子要素(複数の異なる要素)を見つけるのに役立ちました! //field[..id= "FSCHA"] =親要素がid = FSCHAのすべてのフィールド要素を返しました。しかし、//*[../@id = "FSCHA"]は、同じシナリオでフィールドだけでなくすべての要素を返しました。 –

0

これは、少なくとも1つの属性

//*[count(./@*) &gt; 0] 
3

使用に持つあなたのすべてのノードを与えます資料。

/*/*[@*]/expiration_time 

これは、その親の少なくとも1つの属性を持ち、XML文書の最上位要素の子である任意のexpiration_timeの要素を選択します。

/*/*[not(@*)]/expiration_time 

これは、その親の属性を持ちませんが、XML文書の最上位要素の子である任意のexpiration_timeの要素を選択します。

/*/*[@elem = '2']/expiration_time 

これは「2」を持つ親の文字列値でelem属性を持つ任意のexpiration_time要素を選択し、それが(親)は、XML文書の先頭要素の子です。

+0

+1これは私を助けました。非常に良い例です! – mrt

+0

@mrt、あなたは大歓迎です:) –

関連する問題