Baru -baru ini, XML telah digunakan dalam proyek. Persyaratannya adalah ketika pengguna menginstal produk, mereka pertama -tama menyimpan serangkaian data ke dalam file XML, dan menulisnya ke database ketika langkah terakhir dieksekusi. Ini meminimalkan akses ke database, jadi mereka harus khawatir tentang kompatibilitas masing -masing browser (sedih ...)
Masukkan teks utama dan merupakan file XML (createInstal.xml)
<?xml version="1.0" encoding="utf-8"?><info><Item><id description="level" name="1" f_chines="number" t_chines="" english="id" value="1">number</id><levelname description="level" name="" f_chines="level name" t_chines="name" english="Level-Name" value="Level-1">level name</levelname><decrption description="Level" name="" f_chines="Level-Description" english="Level-Description" value="Level">Description</decrption><Tchines description="Level" name="" f_chines="Traditional Chinese" t_chines="Traditional Chinese" english="T-Chinese" value="1">Traditional Chinese</Tchines><english description="Level" name="" f_chines = "Nama Bahasa Inggris" t_chines = "Nama Bahasa Inggris" Bahasa Inggris = "Bahasa Inggris" Value = "LevelOne"> Nama Bahasa Inggris </sengisani> <6 Deskripsi = "Award" Name = "106" F_Chines = "Award" T_Chines = "English" "111" Nilai "" A " Inggris = "11" value = "0,05"/> <penghargaan Eleven Description = "Award" name = "112" f_chines = "Award Eleven" t_chines = "penghargaan" name = "112" f_chines = "penghargaan sebelas" t_chines = "penghargaan" nama = "113" f_chines = "penghargaan Eleven" t_chines = "33 33" name = "0.83" F_CHINES = "Award Eleven" T_CHINES = "" 33 33 "NOVED =" F_CHINES = "Award Eleven" T_CHINES = "" 3 "33" NILAI 0.83 "NILAI 0.8" NILAI 0.83 " name = "101" f_chines = "Award One" t_chines = "satu" Inggris = "AWORD-OF-A" Value = "0.90"/> </TITEM> </info>
Agar kompatibel dengan IE dan FF, tulis fungsi -fungsi berikut (LoadXml.js):
var is_ie = false; // Apakah itu browser IE if (window.activexObject) {is_ie = true;} // muat multi-browser-compatible function document function loadxml (xmlUrl) {var xmldoc = null; coba {xmldoc = new activexObject ("microsoft.xlDoc = null; document.implementation.createDocument("", "", null);} catch (e) {alert(e.message);}}try {//Change asynchronous loading of xmldoc.async =false;xmldoc.load(xmlUrl);return xmldoc;}catch (e) {alert(e.message);}returnnull;}//Swap a string Dalam format dokumen XML untuk fungsi dokumen xml createxml (xmltext) {if (! xmltext) {returnNull; coba {var xmldocm = new ActivexObject ("microsoft.xmldom"); xmldocm.loadxml (xmltext); return xmldoCm; {xmldocm.Loadxml (xmltext); return xmldoCm; {xmldocm.Loadxml (xmltext); return xmldOm; DomParse (). ParsefromString (xmltext, "text/xml");} catch (e) {returnNull;}}}} // Dapatkan teks node dan anak -anaknya berfungsi getxmltext (onode) {if (onode.text) {// iereturn onode. onode.childnodes.length; i ++) {// Ketenangan simpul anak if (onode.childnodes [i] .haschildnodes ()) {// Apakah ada node anak steks += getxmltex onode [i] .childnodes.nodevalue;}} return stext;} // Dapatkan identifikasi string dari node dan fungsi node anak -anaknya getxml (onode) {if (onode.xml) {// iereturn onode.xml;} var serializer = xmml New Xmmlializer (baru); Serializer.SerializetoString (onode);} // Dapatkan teks dari simpul yang ditentukan (Catatan: Anda juga dapat menggunakan Onode.Childnodes [0] .nodevalue untuk mendapatkan informasi teks dari node, sehingga Anda tidak perlu mempertimbangkan {everode {eiDEOpe {oMSOODE {{OnodeSe) (Onodee) (Onodee) (Onodee) (Onodee) {{OnodeSe) (Onodee) {{OnodeSe) (Onodee) (Onodee) {{OnodeSe) (OnodeSe) (OnodeSe) (Onodee) (Onodee) (Onodee) (Onodee) (Onodee) (OnodeSe) {{OnodeSe) (OnodeSe) {{OnodeSE (OnodeSE (OnodeSE ( (onode.nodetype == 1) return onode.textContent;}} // Dapatkan nilai atribut dari fungsi simpul yang ditentukan getXmlNodeAttribute (onode, attrname) {if (if (onode.nodetype = iPeetype = i ifeType (attrname) {if (onode. onode.attributes [attrName] .value; kembalikan "tidak terdefinisi";}}OK IE dan FF tidak lagi menjadi masalah, metode operasi spesifik adalah sebagai berikut:
var docum = loadXml ("createInstal.xml"); // Muat file xml var root = document.documentElement; // root node var nodelist = root.geteLementsbyTagname ("item"); untuk (var i = 0; i <nodelist [0] .childnodes.length; i ++ var i = 0; i <nodelist [0] .Childnodes.length; i ++) getxmlnodeattribute (nodelist [0] .childnodes [i], "description"); // Dapatkan atribut deskripsi dari node ini if (attr! = "tidak terdefinisi") // Tujuannya harus kompatibel dengan ff browser {waspada (attr); }}Ini akan memastikan kompatibilitas antara IE dan FF (saat ini, Google Chrome tidak dapat menggunakan metode ini untuk kompatibel, dan masih harus dimodifikasi)
Juga, mari kita bicara tentang dua cara untuk mendapatkan XML di Firefox:
JS membaca file XML di Firefox
Saya mencari metode "JS membaca file XML di Firefox" secara online untuk waktu yang lama, dan banyak dari mereka ditanya dan tidak ada yang menjawab. Saya melihat sekelompok programmer mengeluh tentang Firefox: "Tidak ada manfaat kecuali untuk pemrogram knalpot." Saya kembali ke intinya. Firefox tidak mendukung objek ActiveXObject di IE. Untuk mendapatkan DOM XML, ada dua cara untuk:
1. Document.implementation.createdocument ("", "", null);
2. Window.xmlHttpRequest
Contoh: 1. Var dom = document.implementation.createdocument ("", "", null);
dom.async = false;
dom.load ("test.xml"); // dom adalah objek XML.
2. Var oxmlhttp = xmlhttpRequest baru ();
oxmlhttp.open ("get", "test.xml", false);
oxmlhttp.send (null);
//oxmlhttp.responsexml adalah objek XML.
Melihat:
1. Firefox Parses XML Dokumen
2. Browser Firefox dan saya menggunakan TextContent untuk mengurai nilai -nilai node XML yang berbeda.
3. dan itu akan menambah istirahat garis "/n" sebelum dan sesudah beberapa node anak hierarkis (yaitu, saat menggunakan anak -anak). (Saya tidak tahu mengapa ini terjadi ketika men -debug dengan Firebug, jadi yang terbaik adalah menguji kode yang saya tulis. Jika salah untuk mengubah lingkungan) yaitu, simpul pertama adalah "/n", dan simpul kedua adalah yang asli
Simpul pertama. Node ketiga adalah "/n", dan simpul keempat adalah simpul kedua yang sebenarnya.
Menurut situasi Firefox di atas, saya punya contoh di sini untuk menghindari penggunaan anak -anak dan mencapai kompatibilitas: klik untuk masuk
Di atas adalah metode implementasi file XML operasi JS yang dibawa kepada Anda oleh editor, yang kompatibel dengan semua isi IE dan Firefox. Saya harap semua orang mendukung wulin.com lebih banyak ~