SORU
7 EYLÜL 2010, Salı


't düğüm ile kullanıldığında işe birden fazla Metin alt düğüm ile değil XPath (() metin,'string') içerir

Dom4j ... ile Xpath içeren küçük bir sorunum var

Benim XML diyelim

<Home>
    <Addr>
        <Street>ABC</Street>
        <Number>5</Number>
        <Comment>BLAH BLAH BLAH <br/><br/>ABC</Comment>
    </Addr>
</Home>

Metin kök Öğesi verilen ABC tüm düğümleri bulmak istiyorum diyelim...

Yazmak için gerekli olacağını xpath olur

//*[contains(text(),'ABC')]

Ancak bu Dom4j verir ne değildir.... bu xpath nasıl çalıştığını dom4j bir sorun ya da benim anlayış. sorgu döndürür beri sadece Sokak Element ve Yorum unsur değil.

DOM Yorum öğesi dört kategori ile kompozit bir eleman

[Text = 'XYZ'][BR][BR][Text = 'ABC'] 

Sorgu hala eleman bulmak gerekir bu yana elemanı dönüp içerir çalıştırmak gerektiğini sanıyorum ama değil

aşağıdaki sorgu elemanı döndürür ama daha sonra sadece öğe, bu sorun için istenmeyen bir durum ... ana unsurlar olarak geri dönüyor.

//*[contains(text(),'ABC')]

Herhangi bir Element <Street/> <Comment/> dönecekti xpath sorgusu biliyor mu ?

CEVAP
7 EYLÜL 2010, Salı


<Comment> etiketi iki metin düğümleri ve çocuklar <br> iki düğüm içerir.

Xpath ifade edildi

//*[contains(text(),'ABC')]

Bu yıkmak

  1. * bir düğüm-kümesi döndürür herhangi bir element (tag yani) -- eşleşen bir seçici.
  2. [] düğüm kümesindeki her bir birey düğüm üzerinde faaliyet gösteren bir koşullu. Eğer üzerinde çalıştığı bireysel düğümleri parantez içindeki koşullar uyuyorsa uyuyor.
  3. text()seçicibir düğüm kümesi ile döner bağlam düğüm çocukları olan metin düğümleri tüm maçlar.
  4. contains bir dize üzerinde faaliyet gösteren bir işlevdir. Eğer düğüm bir küme kabul edersek, düğüm kümesi converted into a string by returning the string-value of the node in the node-set that is first in document order. Dolayısıyla, <Comment> eleman ... yani sadece ilk metin düğümü BLAH BLAH BLAH eşleştirebilirsiniz. Bu maç olmadığı için sonuçları <Comment> bir hakkın yok.

Bunu değiştirmek gerekir

//*[text()[contains(.,'ABC')]]
  1. * bir düğüm-kümesi döndürür herhangi bir element (tag yani) -- eşleşen bir seçici.
  2. [] dış belgedeki her eleman üzerinde çalıştığı düğüm -- set her düğüm burada faaliyet gösteren bir koşullu.
  3. text()seçicibir düğüm kümesi ile döner bağlam düğüm çocukları olan metin düğümleri tüm maçlar.
  4. [] her düğüm üzerinde faaliyet gösteren bir koşullu iç düğüm ... burada her tek tek bir metin düğümü ayarlayın. Her tek tek bir metin düğümü parantez içinde herhangi bir yol için başlangıç noktasıdır, ve ayrıca parantez içinde . olarak açıkça ifade edilebilir. Eğer üzerinde çalıştığı bireysel düğümleri parantez içindeki koşullar uyuyorsa uyuyor.
  5. contains bir dize üzerinde faaliyet gösteren bir işlevdir. Burada tek bir metin düğümü (.) geçirilir. <Comment> etiket ikinci metin düğümü tek tek geçirilir beri 'ABC' dize görmek ve buna uygun mümkün olacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Creavite

    Creavite

    8 Mart 2009
  • DeAdPiXel6667

    DeAdPiXel666

    2 Ocak 2010
  • bored before i even began

    bored before

    30 Mart 2009