2012-04-22 24 views
9

Zayıf XHTML var xpath ile ayrıştırmam gerekiyor. Şöyle görünüyor:İç içe yerleştirilmiş öğelerin üzerinde metin() ancak boşluk yok

<div class="foo"> 
    i need this text 
    <br/> 
    <br/> 
    <span>sometext</span> 
</div> 

<div class="foo"> 
    <span>some other text</span> 
    <span>sometext</span> 
</div> 

İlk divanda "bu metne ihtiyacım var" ile TÜM içeriği seçmek istiyorum. Benim sorunum, div öğelerinin whitespaces veya başka şeyler içermesidir, böylece // div [@ class = "foo"]/text() ikinci div için boş dizeleri döndürüyor. Bu boş alanları görmezden gelmek istiyorum, bunu nasıl yapabilirim?

+0

şey yapıyor mu ekleme gibi [normalleştirmek-boşluk() = ""!] Sorgu yardımı sonunda: – Steve

cevap

13

Kullanım:

//div 
    [.//text() 
     [normalize-space() = 'i need this text'] 
    ] 
    //text()[normalize-space()] 

Bu belgede herhangi div herhangi boşluk olmayan salt metin düğümü soyundan seçer ki (div) normalleştirilmiş dize değeri olan bir metin düğümü soyundan vardır "i need this text". (- bir bağımsız değişken belirtilirse bağlamsal düğümün dize değeri) ve ondan başındaki ve sonundaki boşluk karakterleri silindiği bir dizi ve herhangi bir iç grubu üretir

normalize-space() işlev bir dizisini alır bitişik boşluk karakterleri, tek bir boşlukla değiştirilir.

//span[@class='glyphicon glyphicon-list mr5']/..[contains(normalize-space(text()),'Applications')]

-1

bu seçici deneyin?
+0

Lütfen bir metin ekleyin. –

İlgili konular