Saya ingin membaca data XML menggunakan XPath di Jawa, jadi untuk informasi yang telah saya kumpulkan, saya tidak dapat menguraikan XML sesuai dengan kebutuhan saya.
inilah yang ingin saya lakukan:
Dapatkan file XML dari online melalui URL-nya, lalu gunakan XPath untuk menguraikannya, saya ingin membuat dua metode di dalamnya. Salah satunya adalah di mana saya memasukkan id atribut simpul tertentu, dan saya mendapatkan semua simpul anak sebagai hasilnya, dan kedua adalah misalkan saya hanya ingin mendapatkan nilai simpul anak khusus
<?xml version="1.0"?>
<howto>
<topic name="Java">
<url>http://www.rgagnonjavahowto.htm</url>
<car>taxi</car>
</topic>
<topic name="PowerBuilder">
<url>http://www.rgagnon/pbhowto.htm</url>
<url>http://www.rgagnon/pbhowtonew.htm</url>
</topic>
<topic name="Javascript">
<url>http://www.rgagnon/jshowto.htm</url>
</topic>
<topic name="VBScript">
<url>http://www.rgagnon/vbshowto.htm</url>
</topic>
</howto>
Dalam contoh di atas saya ingin membaca semua elemen jika saya mencari melalui @name dan juga satu fungsi di mana saya hanya ingin url dari @name 'Javascript' hanya mengembalikan satu elemen simpul.
Jawaban:
Anda perlu sesuatu seperti ini:
Kemudian Anda memanggil
expr.evaluate()
lewat dalam dokumen yang ditentukan dalam kode itu dan jenis kembali yang Anda harapkan, dan melemparkan hasilnya ke jenis objek dari hasil.Jika Anda memerlukan bantuan dengan ekspresi XPath tertentu, Anda mungkin harus menanyakannya sebagai pertanyaan terpisah (kecuali itu pertanyaan Anda di tempat pertama di sini - saya mengerti pertanyaan Anda tentang bagaimana menggunakan API di Jawa).
Sunting: (Respons terhadap komentar): Ekspresi XPath ini akan memberi Anda teks elemen URL pertama di bawah PowerBuilder:
Ini akan memberi Anda yang kedua:
Anda mendapatkannya dengan kode ini:
Jika Anda tidak tahu berapa banyak URL dalam node yang diberikan, maka Anda sebaiknya melakukan sesuatu seperti ini:
Dan kemudian lewati NodeList.
sumber
Anda bisa mencoba ini.
Dokumen XML
Simpan sebagai
employees.xml
.Kelas Parser
Kelas memiliki metode berikut
Kode sumber
sumber
get
metode Anda . Hanya string XPath yang berubah dan sebagian besar sisa kode tetap sama. Mungkin, metode getValuesForXpath () tunggal sudah cukup.Contoh persiapan:
file xml:
Kode Java:
sumber
Berikut adalah contoh pemrosesan xpath dengan vtd-xml ... untuk pemrosesan XML tugas berat, tidak ada duanya. di sini adalah makalah terbaru tentang hal ini Memproses XML dengan Java - Benchmark Kinerja
sumber
Jika Anda memiliki xml seperti di bawah ini
dan ingin mengekstrak xml di bawah ini
Kode di bawah ini membantu mencapai hal yang sama
Sekarang jika Anda hanya menginginkan xml seperti di bawah ini
Anda perlu mengubah
String xpathStr = "//Envelope//Header";
untukString xpathStr = "//Envelope//Header/*";
sumber
Ini menunjukkan Anda bagaimana caranya
DOM
Nodes
denganXPath
Nodes
.Kami akan memanggil kode dengan pernyataan berikut
Dalam kasus kami, kami ingin mencetak beberapa
creatorNames
daribook.xml
penggunaan"//book/creators/creator/creatorName"
sebagai xpath untuk melakukanprintNode
tindakan pada setiap Node yang cocok denganXPath
.Kode lengkap
Cetakan
Untuk
book.xml
sumber
Memperluas jawaban yang sangat baik oleh @bluish dan @Yishai, berikut adalah bagaimana Anda membuat NodeLists dan atribut simpul mendukung iterators, yaitu
for(Node n: nodelist)
antarmuka.Gunakan seperti:
dan
Kode:
sumber
Baca file XML menggunakan XPathFactory,
SAXParserFactory
danStAX (JSR-173)
.Menggunakan XPath get node dan data turunannya.
Dokumen XML
Put out untuk XPathExpression yang diberikan:
Lihat tautan ini untuk Implementasi kami sendiri
NamespaceContext
sumber