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.comartı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