في الآونة الأخيرة ، تم استخدام XML في المشروع. المطلب هو أنه عندما يقوم المستخدمون بتثبيت المنتج ، يقومون أولاً بحفظ سلسلة من البيانات في ملف XML ، وينتسبونه إلى قاعدة البيانات عند تنفيذ الخطوة الأخيرة. هذا يقلل من الوصول إلى قاعدة البيانات ، لذلك يجب أن تقلق بشأن توافق كل متصفح (حزين ...)
أدخل النص الرئيسي وهو ملف XML (createInstal.xml)
<؟ الاسم </levelname> <devents description = "Level" name = "" f_chines = "level-description" english = "level-description" value = "level"> الوصف </devendtion> <tchines description = "level" name = "f_chines =" internal inshane "t_chines =" التقليدية الصينية "الصينية" t-chinese " f_chines = "english name" t_chines = "english name" English = "English" value = "levelone"> english name </english> <6 description = "Award" name = "106" f_chines = "Award" English = "11" value = "0.05"/> <Award Eleven Description = "Award" name = "112" f_chines = "Award Eleven" T_Chines = "Award" Name = "112" f_chines = "Award Eleven" 3333 " الوصف = "جائزة" name = "101" f_chines = "Award One" T_Chines = "One" English = "Aword-Of-A" value = "0.90"/> </item> </fo
من أجل أن تكون متوافقة مع IE و FF ، اكتب الوظائف التالية (loadxml.js):
var is_ie = false ؛ // هل هو متصفح IE if (window.activexObject) {is_ie = true ؛} // تحميل وظيفة مستند XML متعددة المتفوقات multi-browser loadxml (xmlurl) document.implementation.createdocument ("" ، "" ، null) ؛} catch (e) {Alert ( سلسلة بتنسيق مستند XML إلى وظيفة مستند XML CreatexMl (xmltext) {if (! domparse (). parsefromstring (xmltext ، "text/xml") ؛} catch (e) {returnnull ؛}}}} // احصل على نص العقدة ودالة أطفالها getxmltext (onode) {if (onode.text) {// iereturn onode.tex ؛} onode.childnodes.length ؛ onode [i] .childnodes.nodevalue ؛}} return stext ؛} // احصل على تحديد السلسلة للعقدة ودالة العقد الخاصة بها getxml (onode) {if (onode.xml) {// iereturn onode.xml ؛ serializer.serializetoString (onode) ؛} // احصل على نص العقدة المحددة (ملاحظة: يمكنك أيضًا استخدام onode.childnodes [0] (onode.nodeType == 1) return onode.textContent ؛}} // احصل على قيمة السمة لدالة العقدة المحددة getxmlnodeattribute (onode ، attrname) {if (is_ie) {return onode.getattribute (attrname) ؛ onode.attributes [attrname] .value ؛ إرجاع "غير محدد" ؛}}حسنًا ، لم تعد هناك مشاكل ، فإن طرق التشغيل المحددة هي كما يلي:
var docum = loadxml ("createInstal.xml") ؛ // تحميل ملف xml var var root = document.documentElement ؛ // root node var nodelist = root.getelementsbytagname ( getxmlnodeattribute (nodeList [0] .ChildNodes [i] ، "الوصف") ؛ // الحصول على وصف وصف لهذه العقدة إذا (attr! = "undefined") // الغرض من أن يكون متوافقًا مع متصفح FF {ATTR (attr) ؛ }}سيضمن ذلك التوافق بين IE و FF (في الوقت الحالي ، لا يمكن لـ Google Chrome استخدام هذه الطريقة لتكون متوافقة ، ولا يزال يتعين تعديلها)
أيضًا ، دعنا نتحدث عن طريقتين للحصول على XML في Firefox:
JS قراءة ملفات XML في Firefox
لقد بحثت عن طريقة "قراءة ملفات XML JS في Firefox" على الإنترنت لفترة طويلة ، ولم يطلب الكثير منها. رأيت مجموعة من المبرمجين يشكون من Firefox: "لا توجد فائدة باستثناء مبرمجي العادم". عدت إلى هذه النقطة. لا يدعم Firefox كائنات ActiveXObject في IE. للحصول على XML DOM ، هناك طريقتان ل:
1. document.implementation.createdocument ("" ، "" ، null) ؛
2. window.xmlhttprequest
مثال:
dom.async = false ؛
dom.load ("test.xml") ؛ // DOM هو كائن XML.
2. var oxmlhttp = new xmlhttprequest () ؛
oxmlhttp.open ("get" ، "test.xml" ، false) ؛
oxmlhttp.send (null) ؛
//OXMLHTTP.Responsexml هو كائن XML.
يلاحظ:
1.
2. متصفح Firefox وأنا أستخدم TextContent لتحليل قيم العقد المختلفة لـ XML.
3. وسيضيف خط "/N" قبل وبعد بعض العقد الطفل الهرمية (أي ، عند استخدام childnodes). (لا أعرف لماذا هذا هو الحال عند تصحيح الأخطاء مع Firebug ، لذلك من الأفضل اختبار الكود الذي كتبته. إذا كان من الخطأ تغيير البيئة) أي أن العقدة الأولى هي "/n"
العقدة الأولى. العقدة الثالثة هي "/n" ، والعقدة الرابعة هي العقدة الثانية الحقيقية.
وفقًا لموقف Firefox أعلاه ، لدي مثال هنا لتجنب استخدام الأطفال وتحقيق التوافق: انقر للدخول
ما ورد أعلاه هو طريقة تنفيذ ملفات JS Operation XML التي يتم تقديمها لك من قبل المحرر ، والتي تتوافق مع جميع محتويات IE و Firefox. آمل أن يدعم الجميع wulin.com أكثر ~