2012-02-16 13 views
5

Bazı özniteliklere sahip bir üst düğüme sahip düğüm nasıl seçilir. Örn: tüm expiration_time öğelerini seçmek için Xpath nedir? Aşağıdaki XML'de, durum öğelerinin özelliklere sahip olması durumunda hata alıyorum, aksi halde probs yok.Bazı özniteliklere sahip bir üsteki olan düğüm nasıl seçilir

Teşekkür

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

cevap

4

states/expiration_time[../@elem = "0"]? Bu XML üst elemanın grand çocukları olan tüm expiration_time elemanları seçer

/*/*/expiration_time 

:

+0

Bu gösterimde, bir özniteliği olan bir çocuğun tüm öğelerini (birden çok farklı) bir şeye eşit bulmama gerçekten yardımcı oldu! //field[../@id = "FSCHA"] = üst öğesi bir kimliği = FSCHA olan tüm alan öğelerini döndürdü. Ancak //*[../@id = "FSCHA"], aynı senaryo altında yalnızca alanlara değil tüm öğelere geri döndü. –

0

Bu en az bir tane özellik

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

Kullanım sahip size bütün düğümleri verecektir belgesi.

/*/*[@*]/expiration_time 

Bu kimin ebeveyn en az bir özellik vardır ve XML belgesinin üst elemanın alt öğesi olan herhangi expiration_time elemanı seçer.

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

Bu kimin ebeveyn hiç bir özelliğe sahip ve XML belgesinin üst elemanın alt öğesi olan herhangi expiration_time elemanı seçer.

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

Bu '2' olan ana dize değerine sahip bir elem niteliği olan herhangi expiration_time elemanını seçer ve o (ana), XML belgesinin üst elemanın bir çocuktur.

+0

+1 Bu bana çok yardımcı oldu. Çok güzel örnekler! – mrt

+0

@mrt, Bir şey değil :) –

İlgili konular