Maison interface Web js tutoriel js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)_javascript技巧

js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)_javascript技巧

May 16, 2016 pm 05:42 PM
xml文档 解析

分别针对ie和火狐分别作了对xml文档和xml字符串的解析,所有代码都注释掉了,想看哪部分功能,去掉注释就可以了。

至于在ajax环境下解析xml,其实原理是一样的,只不过放在了ajax里,还是要对返回的xml进行解析。

复制代码 代码如下:




New Document



用js解析xml文档和xml字符串


<script> <BR>//解析xml文档///////////////////////////////////////////////////// <BR>var xmlDoc=null; <BR>//支持IE浏览器 <BR>if(window.ActiveXObject){ <BR>xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); <BR>} <BR>//支持Mozilla浏览器 <BR>else if(document.implementation && document.implementation.createDocument){ <BR>xmlDoc = document.implementation.createDocument('','',null); <BR>} <BR>else{ <BR>alert("here"); <BR>} <BR>if(xmlDoc!=null){ <BR>xmlDoc.async = false; <BR>xmlDoc.load("house.xml"); <BR>} <BR>//ie和火狐不仅解析器不一样,解析过程也不一样。如下; <BR>//ie解析xml文档 <BR>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[0].childNodes[0].childNodes[0].nodeValue);//弹出150万 <BR>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[0].childNodes[1].childNodes[0].nodeValue);//弹出一室三居 <BR>//层层遍历解析childNodes[1] <BR>//alert(xmlDoc.childNodes[1].childNodes[1].childNodes[0].childNodes[0].nodeValue);//弹出200万 <BR>//alert(xmlDoc.childNodes[1].childNodes[0].childNodes[0].childNodes[0].nodeValue);//弹出150万 <BR>//alert(xmlDoc.childNodes[1].childNodes[0].childNodes[1].childNodes[0].nodeValue);//弹出一室三居 <BR>//还可以用item(i)进行遍历 <BR>//var nodes=xmlDoc.documentElement.childNodes; <BR>//alert(nodes.item(0).childNodes.item(0).childNodes.item(0).text); //弹出150万 <BR>//alert(nodes.item(0).childNodes.item(1).childNodes.item(0).text); //弹出一室三居 <BR>//火狐解析xml文档 <BR>//火狐浏览器和ie解析xml不一样节点的值用textContent。 <BR>//并且他会在有的层次child节点前后都加上"\n"换行符。(这个搞不清楚为什么,用firebug调试的时候就是这个样子,所以写过的代码最好测试一下,换个环境就不对了) <BR>//也就是说第1个节点是"\n",第2个节点才是真正的第一个节点。 <BR>//第3个节点是"\n",第4个节点才是真正的第二个节点。 <BR>//层层获取解析childNodes[0] <BR>//alert(xmlDoc.childNodes[0].childNodes[1].childNodes[1].textContent);//弹出150万 <BR>//alert(xmlDoc.childNodes[0].childNodes[1].childNodes[3].textContent);//弹出一室三居 <BR>//直接获取节点名解析getElementsByTagName("address") <BR>//alert(xmlDoc.getElementsByTagName("address")[0].textContent);//弹出150万 一室三居 200万 300万 <BR>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[1].textContent);//弹出150万 一室三居 <BR>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[1].childNodes[1].textContent);//弹出150万 <BR>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[1].childNodes[3].textContent);//弹出一室三居 <BR>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[3].textContent);//弹出200万 <BR>//火狐也可以用item(1)函数遍历,注意也是有的层次节点前后都加了节点"\n"。 <BR>//第一个节点是item(1),第二个节点是item(3),第三个节点是item(5) <BR>//item(1)函数遍历解析 <BR>//var nodes=xmlDoc.documentElement.childNodes; <BR>//alert(nodes.item(1).textContent); //弹出150万 一室三居 <BR>//alert(nodes.item(1).childNodes.item(1).textContent); //弹出150万 <BR>//alert(nodes.item(1).childNodes.item(3).textContent); //一室三居 <BR>//解析xml字符串///////////////////////////////////////////////////////////////////////// <BR>var str="<car>"+ <BR>"<brand><price>50万<pattern>A6"+ <BR>"<brand><price>65万<pattern>A8"+ <BR>"<brand><price>17万"+ <BR>""; <BR>//跨浏览器,ie和火狐解析xml使用的解析器是不一样的。 <BR>var xmlStrDoc=null; <BR>if (window.DOMParser){// Mozilla Explorer <BR>parser=new DOMParser(); <BR>xmlStrDoc=parser.parseFromString(str,"text/xml"); <BR>}else{// Internet Explorer <BR>xmlStrDoc=new ActiveXObject("Microsoft.XMLDOM"); <BR>xmlStrDoc.async="false"; <BR>xmlStrDoc.loadXML(str); <BR>} <BR>//ie解析xml字符串 <BR>//alert(xmlStrDoc.getElementsByTagName("car")[0].childNodes[0].childNodes[0].childNodes[0].nodeValue);//弹出50万 <BR>//alert(xmlStrDoc.getElementsByTagName("car")[0].childNodes[0].childNodes[1].childNodes[0].nodeValue);//弹出A6 <BR>//还可以用item(i)进行遍历 <BR>//var strNodes=xmlStrDoc.documentElement.childNodes; <BR>//alert(strNodes.item(0).childNodes.item(0).childNodes.item(0).text); //弹出50万 <BR>//alert(strNodes.item(0).childNodes.item(1).childNodes.item(0).text); //弹出A6 <BR>//火狐解析xml字符串 <BR>//火狐浏览器和ie解析xml不一样节点的值用textContent。 <BR>//并且他会在有的层次child节点前后都加上"\n"换行符。 <BR>//也就是说第1个节点是"\n",第2个节点才是真正的第一个节点。 <BR>//第3个节点是"\n",第4个节点才是真正的第二个节点。 <BR>//alert(xmlStrDoc.childNodes[0].childNodes[1].textContent);//弹出65万 A8 <BR>//alert(xmlStrDoc.childNodes[0].childNodes[1].childNodes[1].textContent);//A8 <BR>//alert(xmlStrDoc.childNodes[0].childNodes[1].childNodes[0].textContent);//弹出65万 <BR>//火狐也可以用item(1)函数遍历,注意也是有的层次节点前后都加了节点"\n"。 <BR>//第一个节点是item(1),第二个节点是item(3),第三个节点是item(5) <BR>//var nodes=xmlStrDoc.documentElement.childNodes; <BR>//alert(nodes.item(1).textContent); //弹出65万 A8 <BR>//alert(nodes.item(1).childNodes.item(0).textContent); //弹出65万 <BR>//alert(nodes.item(1).childNodes.item(1).textContent); //弹出A8 <BR></script>

其中xml每个节点所在层次是最烦人的问题,只能一次次去试,只要出来一个正确的,
就很好确定节点的层次关系了,或者debug一下。

感觉这方面json还是更好阅读和理解。这个解析太费劲了
复制代码 代码如下:




150万
一室三居


200万


230万



Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Une plongée approfondie dans la signification et l'utilisation du code d'état HTTP 460 Une plongée approfondie dans la signification et l'utilisation du code d'état HTTP 460 Feb 18, 2024 pm 08:29 PM

Analyse approfondie du rôle et des scénarios d'application du code d'état HTTP 460 Le code d'état HTTP est une partie très importante du développement Web et est utilisé pour indiquer l'état de la communication entre le client et le serveur. Parmi eux, le code d'état HTTP 460 est un code d'état relativement spécial. Cet article analysera en profondeur son rôle et ses scénarios d'application. Définition du code d'état HTTP 460 La définition spécifique du code d'état HTTP 460 est "ClientClosedRequest", ce qui signifie que le client ferme la requête. Ce code d'état est principalement utilisé pour indiquer

iBatis et MyBatis : comparaison et analyse des avantages iBatis et MyBatis : comparaison et analyse des avantages Feb 18, 2024 pm 01:53 PM

iBatis et MyBatis : analyse des différences et des avantages Introduction : Dans le développement Java, la persistance est une exigence courante, et iBatis et MyBatis sont deux frameworks de persistance largement utilisés. Bien qu’ils présentent de nombreuses similitudes, il existe également des différences et des avantages clés. Cet article fournira aux lecteurs une compréhension plus complète grâce à une analyse détaillée des fonctionnalités, de l'utilisation et des exemples de code de ces deux frameworks. 1. Fonctionnalités d'iBatis : iBatis est un ancien framework de persistance qui utilise des fichiers de mappage SQL.

Explication détaillée de l'erreur Oracle 3114 : comment la résoudre rapidement Explication détaillée de l'erreur Oracle 3114 : comment la résoudre rapidement Mar 08, 2024 pm 02:42 PM

Explication détaillée de l'erreur Oracle 3114 : Comment la résoudre rapidement, des exemples de code spécifiques sont nécessaires Lors du développement et de la gestion de la base de données Oracle, nous rencontrons souvent diverses erreurs, parmi lesquelles l'erreur 3114 est un problème relativement courant. L'erreur 3114 indique généralement un problème avec la connexion à la base de données, qui peut être provoqué par une défaillance du réseau, un arrêt du service de base de données ou des paramètres de chaîne de connexion incorrects. Cet article expliquera en détail la cause de l'erreur 3114 et comment résoudre rapidement ce problème, et joindra le code spécifique.

Parsing Wormhole NTT : un framework ouvert pour n'importe quel jeton Parsing Wormhole NTT : un framework ouvert pour n'importe quel jeton Mar 05, 2024 pm 12:46 PM

Wormhole est un leader en matière d'interopérabilité blockchain, axé sur la création de systèmes décentralisés résilients et évolutifs qui donnent la priorité à la propriété, au contrôle et à l'innovation sans autorisation. Le fondement de cette vision est un engagement envers l'expertise technique, les principes éthiques et l'alignement de la communauté pour redéfinir le paysage de l'interopérabilité avec simplicité, clarté et une large suite de solutions multi-chaînes. Avec l’essor des preuves sans connaissance, des solutions de mise à l’échelle et des normes de jetons riches en fonctionnalités, les blockchains deviennent plus puissantes et l’interopérabilité devient de plus en plus importante. Dans cet environnement d’applications innovant, de nouveaux systèmes de gouvernance et des capacités pratiques offrent des opportunités sans précédent aux actifs du réseau. Les créateurs de protocoles se demandent désormais comment opérer dans ce nouveau marché multi-chaînes.

Analyse de la signification et de l'utilisation du point médian en PHP Analyse de la signification et de l'utilisation du point médian en PHP Mar 27, 2024 pm 08:57 PM

[Analyse de la signification et de l'utilisation du point médian PHP] En PHP, le point médian (.) est un opérateur couramment utilisé, utilisé pour connecter deux chaînes ou propriétés ou méthodes d'objets. Dans cet article, nous approfondirons la signification et l’utilisation des points médians en PHP, en les illustrant avec des exemples de code concrets. 1. Opérateur de point médian de chaîne de connexion L’utilisation la plus courante en PHP consiste à connecter deux chaînes. En plaçant . entre deux chaînes, vous pouvez les assembler pour former une nouvelle chaîne. $string1=&qu

Analyse des nouvelles fonctionnalités de Win11 : Comment ignorer la connexion au compte Microsoft Analyse des nouvelles fonctionnalités de Win11 : Comment ignorer la connexion au compte Microsoft Mar 27, 2024 pm 05:24 PM

Analyse des nouvelles fonctionnalités de Win11 : Comment ignorer la connexion à un compte Microsoft Avec la sortie de Windows 11, de nombreux utilisateurs ont constaté qu'il apportait plus de commodité et de nouvelles fonctionnalités. Cependant, certains utilisateurs n'aiment pas que leur système soit lié à un compte Microsoft et souhaitent ignorer cette étape. Cet article présentera quelques méthodes pour aider les utilisateurs à ne pas se connecter à un compte Microsoft dans Windows 11 afin d'obtenir une expérience plus privée et autonome. Tout d’abord, comprenons pourquoi certains utilisateurs hésitent à se connecter à leur compte Microsoft. D'une part, certains utilisateurs craignent

Analyse des fonctions exponentielles en langage C et exemples Analyse des fonctions exponentielles en langage C et exemples Feb 18, 2024 pm 03:51 PM

Analyse détaillée et exemples de fonctions exponentielles en langage C Introduction : La fonction exponentielle est une fonction mathématique courante, et il existe des fonctions de bibliothèque de fonctions exponentielles correspondantes qui peuvent être utilisées en langage C. Cet article analysera en détail l'utilisation des fonctions exponentielles en langage C, y compris les prototypes de fonctions, les paramètres, les valeurs de retour, etc. et donnera des exemples de code spécifiques afin que les lecteurs puissent mieux comprendre et utiliser les fonctions exponentielles. Texte : La fonction math.h de la bibliothèque de fonctions exponentielles en langage C contient de nombreuses fonctions liées aux exponentielles, dont la plus couramment utilisée est la fonction exp. Le prototype de la fonction exp est le suivant

Apache2 ne peut pas analyser correctement les fichiers PHP Apache2 ne peut pas analyser correctement les fichiers PHP Mar 08, 2024 am 11:09 AM

En raison de contraintes d'espace, voici un bref article : Apache2 est un logiciel de serveur Web couramment utilisé et PHP est un langage de script côté serveur largement utilisé. Lors du processus de création d'un site Web, vous rencontrez parfois le problème qu'Apache2 ne peut pas analyser correctement le fichier PHP, ce qui entraîne l'échec de l'exécution du code PHP. Ce problème est généralement dû au fait qu'Apache2 ne configure pas correctement le module PHP ou que le module PHP est incompatible avec la version d'Apache2. Il existe généralement deux manières de résoudre ce problème :

See all articles