Récemment, XML a été utilisé dans le projet. L'exigence est que lorsque les utilisateurs installent le produit, ils enregistrent d'abord une série de données dans le fichier XML et l'écrivent dans la base de données lorsque la dernière étape est exécutée. Cela minimise l'accès à la base de données, ils doivent donc s'inquiéter de la compatibilité de chaque navigateur (SAD ...)
Entrez le texte principal et est un fichier XML (CreateInstal.xml)
<? xml version = "1.0" Encoding = "utf-8"?> <fo> <élément> <id Description = "Level" name = "1" F_CHINES = "Number" T_CHINES = "" Name "name =" "F_CHIONS =" Name "Name" T_CHIONS = "Name" Name = "F_CHINES =" Level Name "T_CHINES =" Nom </DevelName> <Demption Description = "Level" name = "" F_CHINES = "Level-Description" English = "Level-Description" Value = "Level"> Description </ Demption> <TCHINES Description = "Level" Name = "" F_CHINES = "Chinois traditionnel" T_CHINES = "TRADITIONNEL f_chines = "nom d'anglais" t_chines = "nom anglais" anglais = "anglais" value = "niveone"> name anglais </ anglais> <6 description = "primes" name = "106" f_chines = "primes" t_chines = "six" anglais = "worda-of-t" valu anglais = "11" value = "0,05" /> <primes eleven description = "primes" name = "112" f_chines = "primes eleven" t_chines = "primes" name = "112" f_chines = "primes eleven" t_chines = "laid" name = " description = "prime" name = "101" f_chines = "Award One" t_CHINES = "ONE" English = "aword-of-a" value = "0,90" /> </ item> </ info>
Pour être compatible avec IE et FF, écrivez les fonctions suivantes (loadXml.js):
var is_ie = false; // est-ce un navigateur ie if (window.activexObject) {is_ie = true;} // Chargez la fonction de document xml multi-browser-compatible LoadXml (xmlurl) {var xmldoc = null; try {xmldoc = new activeXOBject ("microsoft.xmldom");} catch (e) {try {xmldoc = document.implementation.CreateDocument ("", "", null);} catch (e) {alert (e.Message);}} try {// modifier le chargement asynchrone de xmldoc.async = false; xmldoc.load (xmlurl); return xmldoc;} catch (e) {alert (e.Message);}}}} Une chaîne au format de document xml vers la fonction de document xml createExml (xmlText) {if (! xmlText) {returnNull; try {var xmldocm = new activeXObject ("Microsoft.xmldom"); Domparse (). PaSefromString (xmlText, "text / xml");} catch (e) {returnnull;}}}} // Obtenez le texte du nœud et de ses enfants fonction getXmlText (onode) {if (onode.text) {// iereTurn onode.tex;} var Stext = ""; onode.childnodes.length; i ++) {// Tranquility du nœud enfant if (onode.childNodes [i] .haschildNodes ()) {// y a-t-il un nœud enfant stext + = getxmltext (onode.childNodes. stext;} // Obtenez l'identification de la chaîne du nœud et de la fonction des nœuds de ses enfants getXml (onode) {if (onode.xml) {// iereturn onode.xml;} var serializer = new XMLSerializer (); return serializer.serializetostring (onode);} // obtenir le texte du Node spécifié (vous pouvez également utiliser. onode.childNodes [0] .Nodevalue pour obtenir les informations texte du nœud, afin que vous n'ayez pas besoin de considérer le problème du navigateur OnodeOnode) getXmlNodeText (onode) {if (is_ie) {return onode.text;} else {if (onode.nodeTy fonction getXmlNodeAtTribute (onode, attNname) {if (is_ie) {return onode.getAttribute (attName);} else {if (onode.nodetype == 1 || onode.nodetype == "1") return onode.attributes [attrname] .value; return "Undefined";}}OK IE et FF ne sont plus des problèmes, les méthodes de fonctionnement spécifiques sont les suivantes:
var docum = loadXml ("CreateInstal.xml"); // Charger un fichier xml var root = document.DocumentElement; // Root nœud var nodeList = root.getElementsByTagName ("items"); pour (var i = 0; i <nodeList [0] .ChildNodes.Length; i ++) {var attRy getXmlNodeAtTribute (nodeList [0] .ChildNodes [i], "Description"); // Get Description Attribut de ce nœud if (att! = "Undefined") // Le but est d'être compatible avec FF Browser {alert (att); }}Cela garantira la compatibilité entre IE et FF (à l'heure actuelle, Google Chrome ne peut pas utiliser cette méthode pour être compatible, et elle doit être modifiée)
Parlons également de deux façons d'obtenir le XML dans Firefox:
JS Lire des fichiers XML dans Firefox
J'ai recherché la méthode de "JS Reading XML Files in Firefox" en ligne pendant longtemps, et beaucoup d'entre eux ont été interrogés et personne n'a répondu. J'ai vu un tas de programmeurs se plaindre de Firefox: "Il n'y a aucun avantage que des programmeurs d'échappement." Je suis revenu au point. Firefox ne prend pas en charge les objets ActiveXObject dans IE. Pour obtenir un DOM XML, il existe deux façons de:
1. Document.IMPLIMENTATION.CREATEDOCUMENT ("", "", null);
2. Window.xmlhttpRequest
Exemple: 1. Var Dom = document.IMPLIMENTATION.CREATEDOCUMENT ("", "", null);
dom.async = false;
dom.load ("test.xml"); // Dom est un objet XML.
2. Var oxmlhttp = nouveau xmlHttpRequest ();
oxmlhttp.open ("get", "test.xml", false);
oxmlhttp.send (null);
//oxmlhttp.Responsexml est un objet XML.
Avis:
1. Documents XML Parses Firefox Parses
2. Firefox Browser et j'utilise TextContent pour analyser les valeurs de différents nœuds de XML.
3. Et il ajoutera des ruptures de ligne "/ n" avant et après certains nœuds chantiers hiérarchiques (c'est-à-dire lors de l'utilisation de l'enfant). (Je ne sais pas pourquoi c'est le cas lors du débogage avec Firebug, il est donc préférable de tester le code que j'ai écrit. S'il est faux de changer l'environnement) c'est-à-dire que le premier nœud est "/ n", et le deuxième nœud est le vrai
Le premier nœud. Le troisième nœud est "/ n", et le quatrième nœud est le véritable deuxième nœud.
Selon la situation de Firefox ci-dessus, j'ai un exemple ici pour éviter d'utiliser ChildNodes et obtenir la compatibilité: cliquez pour entrer
Ce qui précède est la méthode d'implémentation des fichiers XML de l'opération JS que vous avez apportés par l'éditeur, qui est compatible avec tous les contenus de IE et Firefox. J'espère que tout le monde prend en charge Wulin.com plus ~