Heim Web-Frontend js-Tutorial 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万



Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ein tiefer Einblick in die Bedeutung und Verwendung des HTTP-Statuscodes 460 Ein tiefer Einblick in die Bedeutung und Verwendung des HTTP-Statuscodes 460 Feb 18, 2024 pm 08:29 PM

Eingehende Analyse der Rolle und Anwendungsszenarien des HTTP-Statuscodes 460. Der HTTP-Statuscode ist ein sehr wichtiger Teil der Webentwicklung und wird verwendet, um den Kommunikationsstatus zwischen Client und Server anzuzeigen. Unter diesen ist der HTTP-Statuscode 460 ein relativ spezieller Statuscode. In diesem Artikel werden seine Rolle und Anwendungsszenarien eingehend analysiert. Definition des HTTP-Statuscodes 460 Die spezifische Definition des HTTP-Statuscodes 460 lautet „ClientClosedRequest“, was bedeutet, dass der Client die Anfrage schließt. Dieser Statuscode wird hauptsächlich zur Anzeige verwendet

iBatis und MyBatis: Vergleich und Vorteilsanalyse iBatis und MyBatis: Vergleich und Vorteilsanalyse Feb 18, 2024 pm 01:53 PM

iBatis und MyBatis: Analyse der Unterschiede und Vorteile Einführung: In der Java-Entwicklung ist Persistenz eine häufige Anforderung, und iBatis und MyBatis sind zwei weit verbreitete Persistenz-Frameworks. Obwohl sie viele Gemeinsamkeiten aufweisen, gibt es auch einige wesentliche Unterschiede und Vorteile. Dieser Artikel vermittelt den Lesern ein umfassenderes Verständnis durch eine detaillierte Analyse der Funktionen, der Verwendung und des Beispielcodes dieser beiden Frameworks. 1. iBatis-Funktionen: iBatis ist ein älteres Persistenz-Framework, das SQL-Zuordnungsdateien verwendet.

Ausführliche Erklärung des Oracle-Fehlers 3114: So beheben Sie ihn schnell Ausführliche Erklärung des Oracle-Fehlers 3114: So beheben Sie ihn schnell Mar 08, 2024 pm 02:42 PM

Ausführliche Erklärung des Oracle-Fehlers 3114: Um ihn schnell zu beheben, sind spezifische Codebeispiele erforderlich. Bei der Entwicklung und Verwaltung von Oracle-Datenbanken stoßen wir häufig auf verschiedene Fehler, unter denen Fehler 3114 ein relativ häufiges Problem ist. Fehler 3114 weist normalerweise auf ein Problem mit der Datenbankverbindung hin, das durch einen Netzwerkfehler, einen Stopp des Datenbankdienstes oder falsche Einstellungen der Verbindungszeichenfolge verursacht werden kann. In diesem Artikel wird die Ursache des Fehlers 3114 ausführlich erläutert und wie dieses Problem schnell gelöst werden kann. Außerdem wird der spezifische Code angehängt

Analyse der Bedeutung und Verwendung von Midpoint in PHP Analyse der Bedeutung und Verwendung von Midpoint in PHP Mar 27, 2024 pm 08:57 PM

[Analyse der Bedeutung und Verwendung von Mittelpunkt in PHP] In PHP ist Mittelpunkt (.) ein häufig verwendeter Operator, der zum Verbinden zweier Zeichenfolgen oder Eigenschaften oder Methoden von Objekten verwendet wird. In diesem Artikel befassen wir uns eingehend mit der Bedeutung und Verwendung von Mittelpunkten in PHP und veranschaulichen sie anhand konkreter Codebeispiele. 1. String-Mittelpunkt-Operator verbinden Die häufigste Verwendung in PHP ist das Verbinden zweier Strings. Indem Sie . zwischen zwei Saiten platzieren, können Sie diese zu einer neuen Saite zusammenfügen. $string1=&qu

Parsing Wormhole NTT: ein offenes Framework für jedes Token Parsing Wormhole NTT: ein offenes Framework für jedes Token Mar 05, 2024 pm 12:46 PM

Wormhole ist führend in der Blockchain-Interoperabilität und konzentriert sich auf die Schaffung robuster, zukunftssicherer dezentraler Systeme, bei denen Eigentum, Kontrolle und erlaubnislose Innovation im Vordergrund stehen. Die Grundlage dieser Vision ist das Bekenntnis zu technischem Fachwissen, ethischen Grundsätzen und Community-Ausrichtung, um die Interoperabilitätslandschaft mit Einfachheit, Klarheit und einer breiten Palette von Multi-Chain-Lösungen neu zu definieren. Mit dem Aufkommen wissensfreier Nachweise, Skalierungslösungen und funktionsreicher Token-Standards werden Blockchains immer leistungsfähiger und Interoperabilität wird immer wichtiger. In dieser innovativen Anwendungsumgebung eröffnen neuartige Governance-Systeme und praktische Funktionen beispiellose Möglichkeiten für Assets im gesamten Netzwerk. Protokollentwickler setzen sich nun mit der Frage auseinander, wie sie in dieser aufstrebenden Multi-Chain agieren sollen

Analyse der neuen Funktionen von Win11: So überspringen Sie die Anmeldung bei einem Microsoft-Konto Analyse der neuen Funktionen von Win11: So überspringen Sie die Anmeldung bei einem Microsoft-Konto Mar 27, 2024 pm 05:24 PM

Analyse der neuen Funktionen von Win11: So überspringen Sie die Anmeldung bei einem Microsoft-Konto. Mit der Veröffentlichung von Windows 11 haben viele Benutzer festgestellt, dass es mehr Komfort und neue Funktionen bietet. Einige Benutzer möchten jedoch möglicherweise nicht, dass ihr System an ein Microsoft-Konto gebunden ist, und möchten diesen Schritt überspringen. In diesem Artikel werden einige Methoden vorgestellt, mit denen Benutzer die Anmeldung bei einem Microsoft-Konto in Windows 11 überspringen können, um ein privateres und autonomeres Erlebnis zu erreichen. Lassen Sie uns zunächst verstehen, warum einige Benutzer zögern, sich bei ihrem Microsoft-Konto anzumelden. Einerseits befürchten einige Benutzer, dass sie

Analyse von Exponentialfunktionen in C-Sprache und Beispiele Analyse von Exponentialfunktionen in C-Sprache und Beispiele Feb 18, 2024 pm 03:51 PM

Detaillierte Analyse und Beispiele von Exponentialfunktionen in der C-Sprache Einführung: Die Exponentialfunktion ist eine gängige mathematische Funktion, und es gibt entsprechende Bibliotheksfunktionen für Exponentialfunktionen, die in der C-Sprache verwendet werden können. In diesem Artikel wird die Verwendung von Exponentialfunktionen in der C-Sprache, einschließlich Funktionsprototypen, Parametern, Rückgabewerten usw., detailliert analysiert und spezifische Codebeispiele gegeben, damit die Leser Exponentialfunktionen besser verstehen und verwenden können. Text: Die Exponentialfunktionsbibliothek function math.h in der C-Sprache enthält viele Funktionen im Zusammenhang mit Exponentialfunktionen, von denen die exp-Funktion am häufigsten verwendet wird. Der Prototyp der exp-Funktion ist wie folgt

Apache2 kann PHP-Dateien nicht korrekt analysieren Apache2 kann PHP-Dateien nicht korrekt analysieren Mar 08, 2024 am 11:09 AM

Aus Platzgründen folgt hier ein kurzer Artikel: Apache2 ist eine häufig verwendete Webserver-Software und PHP ist eine weit verbreitete serverseitige Skriptsprache. Beim Erstellen einer Website stößt man manchmal auf das Problem, dass Apache2 die PHP-Datei nicht korrekt analysieren kann, was dazu führt, dass der PHP-Code nicht ausgeführt werden kann. Dieses Problem wird normalerweise dadurch verursacht, dass Apache2 das PHP-Modul nicht richtig konfiguriert oder das PHP-Modul nicht mit der Version von Apache2 kompatibel ist. Im Allgemeinen gibt es zwei Möglichkeiten, dieses Problem zu lösen: Die eine ist

See all articles