Rumah hujung hadapan web tutorial js js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)_javascript技巧

js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)_javascript技巧

May 16, 2016 pm 05:42 PM
dokumen xml menghuraikan

分别针对ie和火狐分别作了对xml文档和xml字符串的解析,所有代码都注释掉了,想看哪部分功能,去掉注释就可以了。

至于在ajax环境下解析xml,其实原理是一样的,只不过放在了ajax里,还是要对返回的xml进行解析。

复制代码 代码如下:




New Document



用js解析xml文档和xml字符串


<script> <BR>//解析xml文档///////////////////////////////////////////////////// <BR>var xmlDoc=null; <BR>//支持IE浏览器 <BR>if(window.ActiveXObject){ <BR>xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); <BR>} <BR>//支持Mozilla浏览器 <BR>else if(document.implementation && document.implementation.createDocument){ <BR>xmlDoc = document.implementation.createDocument('','',null); <BR>} <BR>else{ <BR>alert("here"); <BR>} <BR>if(xmlDoc!=null){ <BR>xmlDoc.async = false; <BR>xmlDoc.load("house.xml"); <BR>} <BR>//ie和火狐不仅解析器不一样,解析过程也不一样。如下; <BR>//ie解析xml文档 <BR>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[0].childNodes[0].childNodes[0].nodeValue);//弹出150万 <BR>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[0].childNodes[1].childNodes[0].nodeValue);//弹出一室三居 <BR>//层层遍历解析childNodes[1] <BR>//alert(xmlDoc.childNodes[1].childNodes[1].childNodes[0].childNodes[0].nodeValue);//弹出200万 <BR>//alert(xmlDoc.childNodes[1].childNodes[0].childNodes[0].childNodes[0].nodeValue);//弹出150万 <BR>//alert(xmlDoc.childNodes[1].childNodes[0].childNodes[1].childNodes[0].nodeValue);//弹出一室三居 <BR>//还可以用item(i)进行遍历 <BR>//var nodes=xmlDoc.documentElement.childNodes; <BR>//alert(nodes.item(0).childNodes.item(0).childNodes.item(0).text); //弹出150万 <BR>//alert(nodes.item(0).childNodes.item(1).childNodes.item(0).text); //弹出一室三居 <BR>//火狐解析xml文档 <BR>//火狐浏览器和ie解析xml不一样节点的值用textContent。 <BR>//并且他会在有的层次child节点前后都加上"\n"换行符。(这个搞不清楚为什么,用firebug调试的时候就是这个样子,所以写过的代码最好测试一下,换个环境就不对了) <BR>//也就是说第1个节点是"\n",第2个节点才是真正的第一个节点。 <BR>//第3个节点是"\n",第4个节点才是真正的第二个节点。 <BR>//层层获取解析childNodes[0] <BR>//alert(xmlDoc.childNodes[0].childNodes[1].childNodes[1].textContent);//弹出150万 <BR>//alert(xmlDoc.childNodes[0].childNodes[1].childNodes[3].textContent);//弹出一室三居 <BR>//直接获取节点名解析getElementsByTagName("address") <BR>//alert(xmlDoc.getElementsByTagName("address")[0].textContent);//弹出150万 一室三居 200万 300万 <BR>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[1].textContent);//弹出150万 一室三居 <BR>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[1].childNodes[1].textContent);//弹出150万 <BR>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[1].childNodes[3].textContent);//弹出一室三居 <BR>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[3].textContent);//弹出200万 <BR>//火狐也可以用item(1)函数遍历,注意也是有的层次节点前后都加了节点"\n"。 <BR>//第一个节点是item(1),第二个节点是item(3),第三个节点是item(5) <BR>//item(1)函数遍历解析 <BR>//var nodes=xmlDoc.documentElement.childNodes; <BR>//alert(nodes.item(1).textContent); //弹出150万 一室三居 <BR>//alert(nodes.item(1).childNodes.item(1).textContent); //弹出150万 <BR>//alert(nodes.item(1).childNodes.item(3).textContent); //一室三居 <BR>//解析xml字符串///////////////////////////////////////////////////////////////////////// <BR>var str="<car>"+ <BR>"<brand><price>50万<pattern>A6"+ <BR>"<brand><price>65万<pattern>A8"+ <BR>"<brand><price>17万"+ <BR>""; <BR>//跨浏览器,ie和火狐解析xml使用的解析器是不一样的。 <BR>var xmlStrDoc=null; <BR>if (window.DOMParser){// Mozilla Explorer <BR>parser=new DOMParser(); <BR>xmlStrDoc=parser.parseFromString(str,"text/xml"); <BR>}else{// Internet Explorer <BR>xmlStrDoc=new ActiveXObject("Microsoft.XMLDOM"); <BR>xmlStrDoc.async="false"; <BR>xmlStrDoc.loadXML(str); <BR>} <BR>//ie解析xml字符串 <BR>//alert(xmlStrDoc.getElementsByTagName("car")[0].childNodes[0].childNodes[0].childNodes[0].nodeValue);//弹出50万 <BR>//alert(xmlStrDoc.getElementsByTagName("car")[0].childNodes[0].childNodes[1].childNodes[0].nodeValue);//弹出A6 <BR>//还可以用item(i)进行遍历 <BR>//var strNodes=xmlStrDoc.documentElement.childNodes; <BR>//alert(strNodes.item(0).childNodes.item(0).childNodes.item(0).text); //弹出50万 <BR>//alert(strNodes.item(0).childNodes.item(1).childNodes.item(0).text); //弹出A6 <BR>//火狐解析xml字符串 <BR>//火狐浏览器和ie解析xml不一样节点的值用textContent。 <BR>//并且他会在有的层次child节点前后都加上"\n"换行符。 <BR>//也就是说第1个节点是"\n",第2个节点才是真正的第一个节点。 <BR>//第3个节点是"\n",第4个节点才是真正的第二个节点。 <BR>//alert(xmlStrDoc.childNodes[0].childNodes[1].textContent);//弹出65万 A8 <BR>//alert(xmlStrDoc.childNodes[0].childNodes[1].childNodes[1].textContent);//A8 <BR>//alert(xmlStrDoc.childNodes[0].childNodes[1].childNodes[0].textContent);//弹出65万 <BR>//火狐也可以用item(1)函数遍历,注意也是有的层次节点前后都加了节点"\n"。 <BR>//第一个节点是item(1),第二个节点是item(3),第三个节点是item(5) <BR>//var nodes=xmlStrDoc.documentElement.childNodes; <BR>//alert(nodes.item(1).textContent); //弹出65万 A8 <BR>//alert(nodes.item(1).childNodes.item(0).textContent); //弹出65万 <BR>//alert(nodes.item(1).childNodes.item(1).textContent); //弹出A8 <BR></script>

其中xml每个节点所在层次是最烦人的问题,只能一次次去试,只要出来一个正确的,
就很好确定节点的层次关系了,或者debug一下。

感觉这方面json还是更好阅读和理解。这个解析太费劲了
复制代码 代码如下:




150万
一室三居


200万


230万



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Menyelam mendalam tentang maksud dan penggunaan kod status HTTP 460 Menyelam mendalam tentang maksud dan penggunaan kod status HTTP 460 Feb 18, 2024 pm 08:29 PM

Analisis mendalam tentang peranan dan senario aplikasi kod status HTTP 460 Kod status HTTP adalah bahagian yang sangat penting dalam pembangunan web dan digunakan untuk menunjukkan status komunikasi antara klien dan pelayan. Antaranya, kod status HTTP 460 ialah kod status yang agak istimewa Artikel ini akan menganalisis secara mendalam peranan dan senario aplikasinya. Definisi kod status HTTP 460 Takrif khusus kod status HTTP 460 ialah "ClientClosedRequest", yang bermaksud bahawa klien menutup permintaan. Kod status ini digunakan terutamanya untuk menunjukkan

iBatis dan MyBatis: Analisis Perbandingan dan Kelebihan iBatis dan MyBatis: Analisis Perbandingan dan Kelebihan Feb 18, 2024 pm 01:53 PM

iBatis dan MyBatis: Analisis Perbezaan dan Kelebihan Pengenalan: Dalam pembangunan Java, ketekunan adalah keperluan biasa, dan iBatis dan MyBatis ialah dua rangka kerja kegigihan yang digunakan secara meluas. Walaupun mereka mempunyai banyak persamaan, terdapat juga beberapa perbezaan dan kelebihan utama. Artikel ini akan memberikan pembaca pemahaman yang lebih komprehensif melalui analisis terperinci tentang ciri, penggunaan dan kod sampel kedua-dua rangka kerja ini. 1. Ciri iBatis: iBatis ialah rangka kerja kegigihan yang lebih lama yang menggunakan fail pemetaan SQL.

Penjelasan terperinci tentang ralat Oracle 3114: Cara menyelesaikannya dengan cepat Penjelasan terperinci tentang ralat Oracle 3114: Cara menyelesaikannya dengan cepat Mar 08, 2024 pm 02:42 PM

Penjelasan terperinci tentang ralat Oracle 3114: Bagaimana untuk menyelesaikannya dengan cepat, contoh kod khusus diperlukan Semasa pembangunan dan pengurusan pangkalan data Oracle, kami sering menghadapi pelbagai ralat, antaranya ralat 3114 adalah masalah yang agak biasa. Ralat 3114 biasanya menunjukkan masalah dengan sambungan pangkalan data, yang mungkin disebabkan oleh kegagalan rangkaian, pemberhentian perkhidmatan pangkalan data atau tetapan rentetan sambungan yang salah. Artikel ini akan menerangkan secara terperinci punca ralat 3114 dan cara menyelesaikan masalah ini dengan cepat, dan melampirkan kod tertentu

Parsing Wormhole NTT: rangka kerja terbuka untuk sebarang Token Parsing Wormhole NTT: rangka kerja terbuka untuk sebarang Token Mar 05, 2024 pm 12:46 PM

Wormhole ialah peneraju dalam kebolehkendalian blockchain, memfokuskan pada mencipta sistem terdesentralisasi yang berdaya tahan, kalis masa hadapan yang mengutamakan pemilikan, kawalan dan inovasi tanpa kebenaran. Asas visi ini ialah komitmen terhadap kepakaran teknikal, prinsip etika dan penjajaran komuniti untuk mentakrifkan semula landskap kebolehoperasian dengan kesederhanaan, kejelasan dan rangkaian luas penyelesaian berbilang rantaian. Dengan peningkatan bukti pengetahuan sifar, penyelesaian penskalaan dan piawaian token yang kaya dengan ciri, rantaian blok menjadi lebih berkuasa dan kesalingoperasian menjadi semakin penting. Dalam persekitaran aplikasi yang inovatif ini, sistem tadbir urus baharu dan keupayaan praktikal membawa peluang yang belum pernah berlaku sebelum ini kepada aset merentas rangkaian. Pembina protokol kini bergelut dengan cara untuk beroperasi dalam pelbagai rantaian yang muncul ini

Analisis makna dan penggunaan titik tengah dalam PHP Analisis makna dan penggunaan titik tengah dalam PHP Mar 27, 2024 pm 08:57 PM

[Analisis makna dan penggunaan titik tengah dalam PHP] Dalam PHP, titik tengah (.) ialah operator yang biasa digunakan untuk menyambung dua rentetan atau sifat atau kaedah objek. Dalam artikel ini, kami akan menyelami makna dan penggunaan titik tengah dalam PHP, menggambarkannya dengan contoh kod konkrit. 1. Operator titik tengah rentetan Concatenate Penggunaan yang paling biasa dalam PHP adalah untuk menggabungkan dua rentetan. Dengan meletakkan . antara dua rentetan, anda boleh menyambungkannya untuk membentuk rentetan baharu. $string1=&qu

Analisis ciri baharu Win11: Bagaimana untuk melangkau log masuk ke akaun Microsoft Analisis ciri baharu Win11: Bagaimana untuk melangkau log masuk ke akaun Microsoft Mar 27, 2024 pm 05:24 PM

Analisis ciri baharu Win11: Cara melangkau log masuk ke akaun Microsoft Dengan keluaran Windows 11, ramai pengguna mendapati ia membawa lebih banyak kemudahan dan ciri baharu. Walau bagaimanapun, sesetengah pengguna mungkin tidak suka sistem mereka terikat pada akaun Microsoft dan ingin melangkau langkah ini. Artikel ini akan memperkenalkan beberapa kaedah untuk membantu pengguna melangkau log masuk ke akaun Microsoft dalam Windows 11 dan mencapai pengalaman yang lebih peribadi dan autonomi. Mula-mula, mari kita fahami sebab sesetengah pengguna enggan log masuk ke akaun Microsoft mereka. Di satu pihak, sesetengah pengguna bimbang bahawa mereka

Analisis fungsi eksponen dalam bahasa C dan contoh Analisis fungsi eksponen dalam bahasa C dan contoh Feb 18, 2024 pm 03:51 PM

Analisis terperinci dan contoh fungsi eksponen dalam bahasa C Pengenalan: Fungsi eksponen ialah fungsi matematik biasa, dan terdapat fungsi perpustakaan fungsi eksponen sepadan yang boleh digunakan dalam bahasa C. Artikel ini akan menganalisis secara terperinci penggunaan fungsi eksponen dalam bahasa C, termasuk prototaip fungsi, parameter, nilai pulangan, dsb. dan memberikan contoh kod khusus supaya pembaca dapat memahami dan menggunakan fungsi eksponen dengan lebih baik. Teks: Fungsi perpustakaan fungsi eksponen math.h dalam bahasa C mengandungi banyak fungsi yang berkaitan dengan eksponen, yang paling biasa digunakan ialah fungsi exp. Prototaip fungsi exp adalah seperti berikut

Apache2 tidak boleh menghuraikan fail PHP dengan betul Apache2 tidak boleh menghuraikan fail PHP dengan betul Mar 08, 2024 am 11:09 AM

Disebabkan oleh keterbatasan ruang, berikut ialah artikel ringkas: Apache2 ialah perisian pelayan web yang biasa digunakan, dan PHP ialah bahasa skrip bahagian pelayan yang digunakan secara meluas. Dalam proses membina tapak web, kadangkala anda menghadapi masalah bahawa Apache2 tidak dapat menghuraikan fail PHP dengan betul, menyebabkan kod PHP gagal dilaksanakan. Masalah ini biasanya disebabkan oleh Apache2 tidak mengkonfigurasi modul PHP dengan betul, atau modul PHP tidak serasi dengan versi Apache2. Secara umumnya terdapat dua cara untuk menyelesaikan masalah ini, satu

See all articles