Saya memiliki string variabel yang berisi XML yang dibentuk dengan baik dan valid. Saya perlu menggunakan kode JavaScript untuk mem-parsing umpan ini.
Bagaimana saya bisa mencapai ini menggunakan kode JavaScript (kompatibel dengan browser)?
sumber
Saya memiliki string variabel yang berisi XML yang dibentuk dengan baik dan valid. Saya perlu menggunakan kode JavaScript untuk mem-parsing umpan ini.
Bagaimana saya bisa mencapai ini menggunakan kode JavaScript (kompatibel dengan browser)?
Pembaruan: Untuk jawaban yang lebih benar lihat jawaban Tim Down .
Internet Explorer dan, misalnya, browser berbasis Mozilla mengekspos objek yang berbeda untuk parsing XML, jadi sebaiknya menggunakan kerangka kerja JavaScript seperti jQuery untuk menangani perbedaan lintas browser.
Contoh yang sangat mendasar adalah:
var xml = "<music><album>Beethoven</album></music>";
var result = $(xml).find("album").text();
Catatan: Seperti yang ditunjukkan dalam komentar; jQuery tidak benar-benar melakukan parsing XML apa pun, itu bergantung pada metode DOM innerHTML dan akan menguraikannya seperti halnya HTML apa pun jadi berhati-hatilah saat menggunakan nama elemen HTML di XML Anda. Tapi saya pikir itu bekerja cukup baik untuk 'parsing' XML sederhana, tetapi mungkin tidak disarankan untuk parsing XML intensif atau 'dinamis' di mana Anda tidak memunculkan XML apa yang akan turun dan ini menguji apakah semuanya mem-parsing seperti yang diharapkan.
innerHTML
properti elemen, yang sama sekali tidak dapat diandalkan.jQuery()
] mem-parsing HTML, bukan XML"Jawaban yang diperbarui untuk 2017
Berikut ini akan menguraikan string XML ke dalam dokumen XML di semua browser utama. Kecuali jika Anda memerlukan dukungan untuk IE <= 8 atau browser yang tidak jelas, Anda dapat menggunakan fungsi berikut:
Jika Anda perlu mendukung IE <= 8, yang berikut ini akan melakukan pekerjaan:
Setelah Anda
Document
memperoleh melaluiparseXml
, Anda dapat menggunakan metode / properti traversal DOM biasa sepertichildNodes
dangetElementsByTagName()
untuk mendapatkan node yang Anda inginkan.Contoh penggunaan:
Jika Anda menggunakan jQuery, dari versi 1.5 Anda dapat menggunakan
parseXML()
metode bawaannya, yang secara fungsional identik dengan fungsi di atas.sumber
$()
parsing XML . Baca komentar lebih hati-hati: itu tidak bekerja dalam banyak situasi.parseXML()
menggunakan string. Saya sedikit khawatir mengubah jawaban karena saya tidak punya cara mudah untuk mengujinya sekarang.Sebagian besar contoh di web (dan beberapa yang disajikan di atas) menunjukkan cara memuat XML dari file dengan cara yang kompatibel dengan browser. Ini terbukti mudah, kecuali untuk Google Chrome yang tidak mendukung
document.implementation.createDocument()
metode ini. Saat menggunakan Chrome, untuk memuat file XML ke objek XmlDocument, Anda harus menggunakan objek XmlHttp inbuilt dan kemudian memuat file dengan meneruskannya URI.Dalam kasus Anda, skenario berbeda, karena Anda ingin memuat XML dari variabel string , bukan URL. Namun untuk persyaratan ini, Chrome seharusnya berfungsi seperti Mozilla (atau yang saya dengar) dan mendukung metode parseFromString ().
Ini adalah fungsi yang saya gunakan (itu bagian dari perpustakaan kompatibilitas Browser yang saat ini saya bangun):
sumber
if(window.ActiveXObject){...}
var dp; try{ dp = new DOMParser() } catch(e) { }; if(dp) { // DOMParser supported } else { // alert('you need to consider upgrading your browser\nOr pay extra money so developer can support the old versions using browser sniffing (eww)') }
.Marknote adalah parser JavaScript XML lintas-browser yang ringan dan bagus. Berorientasi objek dan punya banyak contoh, ditambah API yang didokumentasikan. Ini cukup baru, tetapi sejauh ini sudah bekerja dengan baik di salah satu proyek saya. Satu hal yang saya sukai dari itu adalah ia akan membaca XML langsung dari string atau URL dan Anda juga bisa menggunakannya untuk mengonversi XML menjadi JSON.
Berikut ini contoh yang dapat Anda lakukan dengan Marknote:
sumber
Saya selalu menggunakan pendekatan di bawah ini yang berfungsi di IE dan Firefox.
XML Contoh:
JavaScript:
sumber
innerText
bukangetAttribute()
Rupanya jQuery sekarang menyediakan jQuery.parseXML http://api.jquery.com/jQuery.parseXML/ pada versi 1.5
jQuery.parseXML( data )
Pengembalian:XMLDocument
sumber
Silakan lihat XML DOM Parser ( W3Schools ). Ini adalah tutorial tentang parsing DOM XML. Parser DOM yang sebenarnya berbeda dari peramban ke peramban tetapi DOM API terstandarisasi dan tetap sama (lebih atau kurang).
Atau gunakan E4X jika Anda dapat membatasi diri untuk Firefox. Ini relatif lebih mudah digunakan dan merupakan bagian dari JavaScript sejak versi 1.6. Berikut adalah contoh penggunaan kecil ...
sumber
Untuk info lebih lanjut lihat http://www.easycodingclub.com/xml-parser-in-javascript/javascript-tutorials/ ini
sumber
Penafian : Saya telah membuat fast-xml-parser
Saya telah membuat fast-xml-parser untuk mengurai string XML menjadi objek JS / JSON atau objek traversal menengah. Ini diharapkan kompatibel di semua browser (namun hanya diuji pada Chrome, Firefox, dan IE).
Pemakaian
Catatan : Itu tidak menggunakan parser DOM tetapi mengurai string menggunakan RE dan mengubahnya menjadi objek JS / JSON.
Cobalah online , CDN
sumber
Anda juga dapat melalui fungsi jquery ($. ParseXML) untuk memanipulasi string xml
contoh javascript:
sumber