Bu XML verildiğinde, XPath'ın prop
özniteliği Foo
(ilk üç düğüm) içeren tüm öğeleri döndürür :
<bla>
<a prop="Foo1"/>
<a prop="Foo2"/>
<a prop="3Foo"/>
<a prop="Bar"/>
</bla>
Bu XML verildiğinde, XPath'ın prop
özniteliği Foo
(ilk üç düğüm) içeren tüm öğeleri döndürür :
<bla>
<a prop="Foo1"/>
<a prop="Foo2"/>
<a prop="3Foo"/>
<a prop="Bar"/>
</bla>
Yanıtlar:
//a[contains(@prop,'Foo')]
Sonuçları geri almak için bu XML kullanırsanız çalışır.
<bla>
<a prop="Foo1">a</a>
<a prop="Foo2">b</a>
<a prop="3Foo">c</a>
<a prop="Bar">a</a>
</bla>
Düzenleme: Dikkat edilmesi gereken başka bir şey, yukarıdaki XPath belirli bir xml için doğru cevabı döndürürken, yalnızca "bla" öğesinde "a" öğelerini aldığınızdan emin olmak istiyorsanız, diğerlerinin de belirttiği gibi kullanmalısınız
/bla/a[contains(@prop,'Foo')]
Bu, bir "blah" öğesinde iç içe olmasına bakılmaksızın, tüm xml belgenizdeki tüm "a" öğelerini arayacaktır
//a[contains(@prop,'Foo')]
Bunu iyilik ve yığın akışı ruhu için ekledim. :)
xmlme.com
artık başka bir ana bilgisayara yönlendiriyor ve aracı veya benzeri bir şeyi barındırdığı görülmüyor.
Bu XPath, düğüm adı veya öznitelik adından bağımsız olarak 'Foo' içeren özniteliklere sahip tüm düğümleri verecektir:
//attribute::*[contains(., 'Foo')]/..
Tabii ki, özniteliğin içeriğiyle daha fazla ilgileniyorsanız ve üst düğümleri olması gerekmiyorsa, yalnızca / ..
//attribute::*[contains(., 'Foo')]
//@*[contains(., 'Foo')]
descendant-or-self::*[contains(@prop,'Foo')]
Veya:
/bla/a[contains(@prop,'Foo')]
Veya:
/bla/a[position() <= 3]
Dissected:
descendant-or-self::
Eksen - altındaki her düğümde ve düğümün kendisinde arama yapar. Bunu söylemek genellikle // 'den daha iyidir. // her yerde (kök düğümün yavaşlatıcı veya kendi kendine) anlamına gelen bazı uygulamalarla karşılaştım. Diğeri varsayılan ekseni kullanır.
* or /bla/a
Etiket - bir joker karakter eşleşmesi ve / bla / a mutlak bir yoldur.
[contains(@prop,'Foo')] or [position() <= 3]
[] İçindeki durum. @prop, özellik başka bir arama ekseni olduğundan, özellik :: prop için kısaltmadır. Alternatif olarak, position () işlevini kullanarak ilk 3 tanesini seçebilirsiniz.
John C en yakın olanıdır, ancak XPath büyük / küçük harfe duyarlıdır, bu nedenle doğru XPath şöyle olur:
/bla/a[contains(@prop, 'Foo')]
Gibi bir şey denediniz mi:
// a [içerir (@prop, "Foo")]
Daha önce içeren işlevi hiç kullanmadım ama reklamı yapıldığı gibi çalıştığından şüpheleniyorum ...
Bağlantının içeriğiyle de eşleşmeniz gerekiyorsa text () kullanın:
//a[contains(@href,"/some_link")][text()="Click here"]
/ bla / a [içerir (@prop, "foo")]
bunu dene:
// bir [içerir (prop @ 'foo')]
belgedeki herhangi bir "a" etiketi için çalışmalıdır