XPath memilih node dengan beberapa nilai atribut sama dengan beberapa nilai atribut node lain [tertutup]


89
<grand id="grand">
  <parent>
    <child age="18" id="#not-grand"/>
    <child age="20" id="#grand"/> <!-- This is what I want to locate -->
  </parent>
</grand>

Adakah yang bisa memberi tahu saya cara mengungkapkan untuk menemukan anak kedua?

Ini tidak berhasil ...

"/grand/parent/child[@id=concat('#',/grand/@id)]/@age"

Terima kasih.


Maafkan saya. Ekspresinya oke. Saya menemukan saya mendapat beberapa masalah di area lain bukan ekspresi itu sendiri.


3
Xpath Anda berfungsi dengan baik untuk saya.
dogbane

3
Sama untuk saya - hanya mengujinya di sini dan memilih elemen anak kedua.
Andreas Dolk

2
Benar ... Ekspresinya oke. Maafkan saya. Saya telah membuat beberapa kesalahan dalam ekspresi (awalan namespace) dan dokumen contoh. Terima kasih.
Jin Kwon

Jawaban:


98

XPath ini khusus untuk cuplikan kode yang Anda berikan. Untuk memilih <child>dengan id sebagai #grandAnda dapat menulis //child[@id='#grand'].

Untuk mendapatkan usia //child[@id='#grand']/@age

Semoga ini membantu


1
Terima kasih Vaman. Itu membantu. Maksud saya merujuk ekspresi ('/ grand / @ id') untuk evaluasi satu kali bukan nilai ('# grand') yang harus dievaluasi terlebih dahulu.
Jin Kwon

bagaimana jika XML saya memiliki daftar bagian dengan atribut nama lalu bagaimana cara memilihnya sebagai subDataSource? Contoh: <section name="valuation"> <capital-value> some data </capital-value> <location> some data </location> </section> <section name="subject-property"> <address>72 Gordon Avenue</address> <postcode>HA7 3QS</postcode> <bedrooms>2</bedrooms> </section>
Sanjay Sahani

30

Saya pikir inilah yang Anda inginkan:

/grand/parent/child[@id="#grand"]

2
Terima kasih MarcoS. Maksud saya merujuk ekspresi ('/ grand / @ id') untuk evaluasi satu kali bukan nilai ('# grand') yang harus dievaluasi terlebih dahulu.
Jin Kwon

2
@ jin-kwon: Begitu. Jadi, Anda XPath baik-baik saja.
MarcoS
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.