เมื่อเร็ว ๆ นี้มีการใช้ XML ในโครงการ ข้อกำหนดคือเมื่อผู้ใช้ติดตั้งผลิตภัณฑ์พวกเขาจะบันทึกชุดข้อมูลลงในไฟล์ XML ก่อนและเขียนลงในฐานข้อมูลเมื่อมีการดำเนินการขั้นตอนสุดท้าย สิ่งนี้จะช่วยลดการเข้าถึงฐานข้อมูลให้น้อยที่สุดดังนั้นพวกเขาจึงต้องกังวลเกี่ยวกับความเข้ากันได้ของแต่ละเบราว์เซอร์ (SAD ... )
ป้อนข้อความหลักและเป็นไฟล์ XML (createinstal.xml)
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <poal> <รายการ> <id คำอธิบาย = "ระดับ" name = "1" f_chines = "number" t_chines = "" english = "id" value = "1"> number </id> ชื่อ </levelname> <decrption description = "level" name = "" f_chines = "ระดับการอธิบาย" ภาษาอังกฤษ = "ระดับการอธิบาย" value = "ระดับ"> คำอธิบาย </decrption> <tchines คำอธิบาย = "ระดับ" name = "f_chines =" ภาษาจีนดั้งเดิม " f_chines = "ชื่อภาษาอังกฤษ" t_chines = "ชื่อภาษาอังกฤษ" ภาษาอังกฤษ = "ภาษาอังกฤษ" value = "levelone"> ชื่อภาษาอังกฤษ </ภาษาอังกฤษ> <6 คำอธิบาย = "รางวัล" ชื่อ = "106" f_chines = "รางวัล" t_chines = "หก" ภาษาอังกฤษ = "worda-of-t" value = "/> ภาษาอังกฤษ = "11" value = "0.05"/> <รางวัลสิบเอ็ดคำอธิบาย = "รางวัล" ชื่อ = "112" f_chines = "รางวัลสิบเอ็ด" t_chines = "รางวัล" ชื่อ = "112" f_chines = "รางวัลสิบเอ็ด" t_chines = "รางวัล" name = "101" f_chines = "Award one" t_chines = "one" english = "aword-of-a" value = "0.90"/> </item> </info>
เพื่อให้เข้ากันได้กับ IE และ FF ให้เขียนฟังก์ชั่นต่อไปนี้ (loadxml.js):
var is_ie = false; // มันเป็นเบราว์เซอร์ IE ถ้า (window.activexobject) {is_ie = true;} // โหลดฟังก์ชั่น XML ที่เข้ากันได้กับหลาย ๆ เบราว์เซอร์ document.implementation.createdocument ("", "", null);} catch (e) {alert (e.message);}} ลอง {// เปลี่ยนการโหลดแบบอะซิงโครนัสของ xmldoc.async = false; xmldoc.load (xmlurl); return xmldoc; สตริงในรูปแบบเอกสาร XML ไปยังฟังก์ชั่นเอกสาร XML createxml (xmltext) {if (! xmltext) {returnNull; ลอง {var xmldocm = new ActiveXObject ("microsoft.xmldom"); xmldocm.loadxml (xmltext); return xmldocm; domparse (). parsefromstring (xmltext, "text/xml");} catch (e) {returnnull;}}}}} // รับข้อความของโหนดและฟังก์ชั่นลูกฟังก์ชั่น getxmltext (onode) {if (onode.text) onode.childNodes.length; stext;} // รับการระบุสตริงของโหนดและฟังก์ชั่นโหนดเด็ก getxml (onode) {ถ้า (onode.xml) {// iereturn onode.xml;} var serializer = new xmlserializer (); onode.childnodes [0] .nodevalue เพื่อรับข้อมูลข้อความของโหนดดังนั้นคุณไม่จำเป็นต้องพิจารณาปัญหาของเบราว์เซอร์ onodeOnode) ฟังก์ชั่น getxmlnodetext (onode) {ถ้า (is_ie) {return onode.text; ฟังก์ชั่นโหนด getxmlnodeattribute (onode, attrName) {ถ้า (is_ie) {return onode.getAttribute (attrName);} else {ถ้า (onode.nodeType == 1 || onode.nodetype == "1") return onode.attributesโอเค IE และ FF ไม่มีปัญหาอีกต่อไปวิธีการดำเนินการเฉพาะมีดังนี้:
var docum = loadxml ("createinstal.xml"); // โหลดไฟล์ xml var root = document.documentelement; // รูทโหนด var nodelist = root.getElementByTagname ("รายการ"); สำหรับ (var i = 0; getxmlnodeattribute (nodelist [0] .childnodes [i], "คำอธิบาย"); // รับแอตทริบิวต์คำอธิบายของโหนดนี้ถ้า (attr! = "undefined") // วัตถุประสงค์คือการเข้ากันได้กับ FF Browser {Alert (attr); -สิ่งนี้จะช่วยให้มั่นใจได้ถึงความเข้ากันได้ระหว่าง IE และ FF (ในปัจจุบัน Google Chrome ไม่สามารถใช้วิธีนี้เพื่อเข้ากันได้และยังคงได้รับการแก้ไข)
นอกจากนี้เรามาพูดถึงสองวิธีในการรับ XML ใน Firefox:
JS อ่านไฟล์ XML ใน Firefox
ฉันค้นหาวิธีการ "JS Reading XML Files ใน Firefox" ออนไลน์เป็นเวลานานและหลายคนถูกถามและไม่มีใครตอบ ฉันเห็นโปรแกรมเมอร์จำนวนมากบ่นเกี่ยวกับ Firefox: "ไม่มีประโยชน์ยกเว้นโปรแกรมเมอร์ไอเสีย" ฉันกลับมาที่จุด Firefox ไม่รองรับวัตถุ ActiveXObject ใน IE ในการรับ XML DOM มีสองวิธีในการ:
1. Document.implementation.createdocument ("", "", null);
2. window.xmlhttprequest
ตัวอย่าง: 1. var dom = document.implementation.createdocument ("", "", null);
dom.async = false;
dom.load ("test.xml"); // dom เป็นวัตถุ XML
2. var oxmlhttp = ใหม่ xmlhttprequest ();
oxmlhttp.open ("รับ", "test.xml", เท็จ);
oxmlhttp.send (null);
//oxmlhttp.responsexml เป็นวัตถุ XML
สังเกต:
1. Firefox Parses XML เอกสาร
2. เบราว์เซอร์ Firefox และฉันใช้ข้อความเพื่อแยกวิเคราะห์ค่าของโหนดที่แตกต่างกันของ XML
3. และมันจะเพิ่มการแบ่งบรรทัด "/n" ก่อนและหลังโหนดเด็กแบบลำดับชั้น (นั่นคือเมื่อใช้เด็ก) (ฉันไม่รู้ว่าทำไมถึงเป็นกรณีนี้เมื่อทำการดีบักกับ Firebug ดังนั้นจึงเป็นการดีที่สุดที่จะทดสอบรหัสที่ฉันเขียนถ้ามันผิดที่จะเปลี่ยนสภาพแวดล้อม) นั่นคือการพูดโหนดแรกคือ "/n" และโหนดที่สองเป็นของจริง
โหนดแรก โหนดที่สามคือ "/n" และโหนดที่สี่คือโหนดที่สองจริง
ตามสถานการณ์ Firefox ข้างต้นฉันมีตัวอย่างที่นี่เพื่อหลีกเลี่ยงการใช้ ChildNodes และบรรลุความเข้ากันได้: คลิกเพื่อป้อน
ข้างต้นเป็นวิธีการใช้งานของไฟล์ XML Operation JS ที่นำมาให้คุณโดยตัวแก้ไขซึ่งเข้ากันได้กับเนื้อหาทั้งหมดของ IE และ Firefox ฉันหวังว่าทุกคนจะสนับสนุน wulin.com เพิ่มเติม ~