Kürzlich wurde XML im Projekt verwendet. Die Anforderung ist, dass Benutzer, wenn sie das Produkt installieren, zuerst eine Reihe von Daten in der XML -Datei speichern und es in die Datenbank schreiben, wenn der letzte Schritt ausgeführt wird. Dies minimiert den Zugriff auf die Datenbank, sodass sie sich um die Kompatibilität jedes Browsers sorgen müssen (SAD ...)
Geben Sie den Haupttext ein und ist eine XML -Datei (createInstal.xml).
<xml Version = "1.0" coding = "utf-8"?> <Fo> <element> <id Beschreibung = "Level" name = "1" f_chines = "number" t_chines = "englisch =" id "value =" 1 "> nummer </id> <Levelname Beschreibung Name </Levelname> <DECRTUTION BESCHRITTE f_chines = "englischer Name" t_chines = "englischer Name" englisch = "englisch" value = "LevelOne"> Englischer Name </englisch> <6 Beschreibung = "preis" name = "106" f_chines = "preis" t_chines = "Six" english = "worda-t" value = "a"/> <preis English = "11" value = "0,05"/> <preis elf Beschreibung = "preis" name = "112" f_chines = "preis elf" t_chines = "preis" name = "112" f_chines = "Award Eleven" T_Chines = "Award" name = "113" f_chines = "Award Eleven" t_chines = "3333". name = "101" f_chines = "preisung eins" t_chines = "eins" englus
Um mit IE und FF kompatibel zu sein, schreiben Sie die folgenden Funktionen (loadxml.js):
var is_ie = false; //Is it an IE browser if (window.ActiveXObject) {is_Ie =true;}//Load multi-browser-compatible xml document function loadXml(xmlUrl) {var xmldoc =null;try {xmldoc =new ActiveXObject("Microsoft.XMLDOM");}catch (e) {try {xmldoc = document. String im XML -Dokumentformat zu XML -Dokumentfunktion createxml (xmlText) {if (! xmlText) {returnNull; try {var xmldocm = new ActiveXObject ("microsoft.xmldom"); DomParse (). ParsefromString (xmlText, "text/xml");} catch (e) {returnNull;}}} // Erhalten Sie den Text des Knotens und seine Kinder Funktion getXmlText (Onode) {if (Onode.Text) {// iereturn Onode. Onode.Childnodes.length; Onode [i] .Childnodes.nodeValue;}} Return Stext;} // Die String -Identifizierung des Knotens und der Knoten der Kinder erhalten Sie GETXML (Onode) {if (onode.xml) {// iereturn Onode.xml;} var Serializer = new xmlSerial (); serializer.serializeToString (Onode);} // den Text des angegebenen Knotens abrufen (Hinweis: Sie können auch Onode verwenden. (Onode.nodetype == 1) return onode.TextContent;}} // den Attributwert der angegebenen Knotenfunktion getXmlnodeattribute (Onode, Attrname) {if (is_ie) {return Onode.getAtTribute (attrname);} Sonst {if (Onodetype.nodtype) == 1 | Onode.Attributes [Attrname] .Value; Rückkehr "undefiniert";}}OK IE und FF sind keine Probleme mehr, die spezifischen Betriebsmethoden sind wie folgt:
var docum = loadxml ("createInstal.xml"); // laden Sie eine XML -Datei var root = document.documentElement; // root node var nodelist = root.getElementsByTagName ("items"); for (var i = 0; i <nodeList [0] .Childnodes.Length; getXmlnodeattribute (nodelist [0] .Childnodes [i], "Beschreibung"); // Beschreibung Attribut dieses Knotens if (attr! }}Dadurch wird die Kompatibilität zwischen IE und FF gewährleistet (derzeit kann Google Chrome diese Methode nicht als kompatibel verwenden, und sie muss noch geändert werden)
Sprechen wir auch über zwei Möglichkeiten, um den XML in Firefox zu erhalten:
JS lesen XML -Dateien in Firefox
Ich habe lange nach der Methode "JS Reading XML -Dateien in Firefox" gesucht, und viele von ihnen wurden gefragt und niemand antwortete. Ich habe eine Reihe von Programmierern gesehen, die sich über Firefox beschwert haben: "Es gibt keinen Nutzen außer den Auspuffprogrammierern." Ich bin wieder auf den Punkt gekommen. Firefox unterstützt ActiveXObject -Objekte in IE nicht. Um ein XML -DOM zu erhalten, gibt es zwei Möglichkeiten zu:
1. document.implementation.createdocument ("", "", null);
2. Fenster.xmlhttprequest
Beispiel: 1. var dom = document.implementation.createdocument ("", "", null);
Dom.async = false;
DOM.LOAD ("test.xml"); // Dom ist ein XML -Objekt.
2. var oxmlhttp = neuer xmlhttprequest ();
oxmlhttp.open ("get", "test.xml", false);
oxmlhttp.send (null);
//oxmlHttp.ResponsexML ist ein XML -Objekt.
Beachten:
1. Firefox spricht XML -Dokumente an
2. Firefox Browser und ich verwenden TextContent, um die Werte verschiedener Knoten von XML zu analysieren.
3. und es fügt "/n" Zeilen vor und nach einigen hierarchischen untergeordneten Knoten (dh bei der Verwendung von Childnodes) zu. (Ich weiß nicht, warum dies beim Debuggen mit Firebug der Fall ist. Daher ist es am besten, den Code zu testen, den ich geschrieben habe. Wenn es falsch ist, die Umgebung zu ändern.) Das heißt, der erste Knoten ist "/n" und der zweite Knoten ist der wahre
Der erste Knoten. Der dritte Knoten ist "/n" und der vierte Knoten ist der reale zweite Knoten.
Nach der obigen Firefox -Situation habe ich hier ein Beispiel, um die Verwendung von Childnodes zu vermeiden und Kompatibilität zu erreichen: Klicken Sie auf, um einzugeben
Das oben oben ist die Implementierungsmethode von JS Operation XML -Dateien, die Ihnen vom Editor zur Verfügung gestellt wurden, die mit allen Inhalten von IE und Firefox kompatibel ist. Ich hoffe, jeder unterstützt wulin.com mehr ~