Heim > Web-Frontend > js-Tutorial > Hauptteil

So konvertieren Sie XML und JSON zwischen JS

php中世界最好的语言
Freigeben: 2018-04-25 09:40:11
Original
2670 Leute haben es durchsucht

Dieses Mal werde ich Ihnen die Methode zum Konvertieren von XML und JSON mit JS vorstellen. Was sind die Vorsichtsmaßnahmen für die Konvertierung von XML und JSON mit JS? Das Folgende ist ein praktischer Fall, schauen wir uns das an.

Während der Entwicklung werden manchmal XML und JSON ineinander konvertiert, und sie müssen in JS verwendet werden. Ich habe viel im Internet gesucht, aber jedem nützlichen fehlten entweder Arme oder Beine oder die Wörter Ich habe die Bedeutung nicht zum Ausdruck gebracht. Es war zu nutzlos, ich habe beschlossen, es selbst zu erkennen.

Vergleich der Unterschiede zwischen JSON und XML

1. Einführung in die Definition

(1).XML Definition

Extensible Markup Language (XML), eine Auszeichnungssprache, die zum Markieren elektronischer Dokumente verwendet wird, um sie strukturell zu gestalten. Sie kann zum Markieren von Daten und zum Definieren von Datentypen verwendet werden Eine Quellsprache, die es Benutzern ermöglicht, ihre eigene Auszeichnungssprache zu definieren. XML verwendet die Dokumenttypdefinition DTD (Document Type Definition), um Daten zu organisieren. Das Format ist einheitlich, plattform- und sprachübergreifend und hat sich in der Branche längst zu einem anerkannten Standard entwickelt.
XML ist eine Teilmenge der Standard Generalized Markup Language (SGML) und eignet sich gut für die Webübertragung. XML bietet eine einheitliche Methode zum Beschreiben und Austauschen strukturierter Daten unabhängig von Anwendungen oder Anbietern.

(2).JSON-Definition

JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat mit guter Zuverlässigkeit beim Lesen und schnellen Schreibfunktionen . Der Datenaustausch zwischen verschiedenen Plattformen ist möglich. JSON verwendet ein hochkompatibles und vollständig sprachunabhängiges Textformat und weist außerdem ein Systemverhalten auf, das den Gewohnheiten der C-Sprache ähnelt (einschließlich C, C++, C#, Java, JavaScript, Perl, Python usw.). Diese Eigenschaften machen JSON zu einer idealen Datenaustauschsprache.
JSON basiert auf der Programmiersprache JavaScript, einer Teilmenge des Standards ECMA-262, 3. Ausgabe – Dezember 1999.

2. Vor- und Nachteile von XML und JSON

(1) Vor- und Nachteile von XML

< 1>. Vorteile von XML
A. Das Format ist einheitlich und standardkonform
B. Es ist einfacher, aus der Ferne mit anderen Systemen zu interagieren und der Datenaustausch ist bequemer.

<2>. Nachteile von XML
A. XML-Dateien sind riesig, das Dateiformat ist komplex und die Übertragung nimmt Bandbreite in Anspruch
B. Sowohl der Server als auch der Client müssen aufwenden viel Code zum Parsen von XML. Dadurch werden die serverseitigen und clientseitigen Codes extrem komplex und schwer zu warten.
C. Die Art und Weise, XML zwischen verschiedenen Browsern auf der Clientseite zu analysieren, ist inkonsistent Es muss viel Code wiederholt geschrieben werden.
D. Das serverseitige und clientseitige Parsen von XML verbraucht mehr Ressourcen und Zeit.

(2). Vor- und Nachteile von JSON

<1> A. Das Datenformat ist relativ einfach und leicht zu verarbeiten Lesen und Schreiben, Formatieren Sie sind alle komprimiert und beanspruchen wenig Bandbreite. B. Einfach zu analysieren, clientseitiges JavaScript kann JSON-Daten einfach über eval() lesen mehrere Sprachen, einschließlich ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby und andere serverseitige Sprachen, um das serverseitige Parsen zu erleichtern

  D. In der PHP-Welt Es gibt bereits PHP-JSON und JSON- PHP ist erschienen, und es wird bevorzugt, dass PHP-serialisierte Programme direkt aufgerufen werden. PHP-Serverobjekte, -Arrays usw. können direkt das JSON-Format generieren, was für den Clientzugriff und die Extraktion praktisch ist ;

E. Da das JSON-Format direkt von der Serverseite verwendet werden kann. Die Verwendung von Code vereinfacht die Codeentwicklung auf der Server- und Clientseite erheblich, und die Aufgaben bleiben unverändert und sind einfach zu erledigen pflegen.

<2>. Nachteile von JSON

A. Es ist nicht so beliebt und weit verbreitet wie das XML-Format und es ist nicht so vielseitig wie XML

B . JSON Die Förderung des Formats in Webdiensten steckt noch in den Kinderschuhen.

XML in JSON in Javascript konvertieren

Schauen Sie sich zuerst das Aufrufbeispiel an:

<viewport id="menuPane" layout="border">
    <panel region="center" border="0" layout="border">
        <tbar>
            <toolbar text="XXXX">
                <menu>
                    <text text="11">
                    </text>
                    <text text="22">
                    </text>
                    <text text="33">
                    </text>
                </menu>
            </toolbar>
            <toolbar text="XXXX">
                <menu>
                    <text text="44">
                    </text>
                    <text text="55">
                    </text>
                    <menu>
                        <text text="6 6">
                        </text>
                    </menu>
                    <text text="77">
                    </text>
                </menu>
            </toolbar>
        </tbar>
    </panel>
</viewport>
var xmlParser = new XmlToJson();
var json = xmlParser.parse(xml);
console.log( JSON.stringify(json) );
var jsonParser = new JsonToXml();
var xml = jsonParser.parse(json);
console.log( xml );
Nach dem Login kopieren
XML in JSON konvertieren:

function XmlToJson() {
}
XmlToJson.prototype.setXml = function(xml) {
    if(xml && typeof xml == "string") {
        this.xml = document.createElement("p");
        this.xml.innerHTML = xml;
        this.xml = this.xml.
getElementsByTagName
("*")[0];
    }
    else if(typeof xml == "object"){
        this.xml = xml;
    }
};
XmlToJson.prototype.getXml = function() {
    return this.xml;
};
XmlToJson.prototype.parse = function(xml) {
    this.setXml(xml);
    return this.convert(this.xml);
};
XmlToJson.prototype.convert = function(xml) {
    if (xml.nodeType != 1) {
        return null;
    }
    var obj = {};
    obj.xtype = xml.nodeName.toLowerCase();
    var nodeValue = (xml.textContent || "").replace(/(\r|\n)/g, "").replace(/^\s+|\s+$/g, "");
    
    if(nodeValue && xml.childNodes.length == 1) {
        obj.text = nodeValue;
    }
    if (xml.attributes.length > 0) {
        for (var j = 0; j < xml.attributes.length; j++) {
            var attribute = xml.attributes.item(j);
            obj[attribute.nodeName] = attribute.nodeValue;
        }
    }
    if (xml.childNodes.length > 0) {
        var items = [];
        for(var i = 0; i < xml.childNodes.length; i++) {
            var node = xml.childNodes.item(i);
            var item = this.convert(node);
            if(item) {
                items.push(item);
            }
        }
        if(items.length > 0) {
            obj.items = items;
        }
    }
    return obj;
};
Nach dem Login kopieren

JSON in XML konvertieren:

function JsonToXml() {
 this.result = [];
}
JsonToXml.prototype.spacialChars = ["&","<",">","\"","&#39;"];
JsonToXml.prototype.validChars = ["&","<",">",""","&#39;"];
JsonToXml.prototype.toString = function(){
 return this.result.join("");
};
JsonToXml.prototype.replaceSpecialChar = function(s){
    for(var i=0;i<this.spacialChars.length;i++){
        s=s.replace(new RegExp(this.spacialChars[i],"g"),this.validChars[i]);
    }
    return s;
};
JsonToXml.prototype.appendText = function(s){
    s = this.replaceSpecialChar(s);
    this.result.push(s);
};
JsonToXml.prototype.appendAttr = function(key, value){
    this.result.push(" "+ key +"=\""+ value +"\"");
};
JsonToXml.prototype.appendFlagBeginS = function(s){
 this.result.push("<"+s);
};
JsonToXml.prototype.appendFlagBeginE = function(){
 this.result.push(">");
};
JsonToXml.prototype.appendFlagEnd = function(s){
 this.result.push("</"+s+">");
};
JsonToXml.prototype.parse = function(json){
 this.convert(json);
 return this.toString();
};
JsonToXml.prototype.convert = function(obj) {
 var nodeName = obj.xtype || "item";
 this.appendFlagBeginS(nodeName);
 var arrayMap = {};
 for(var key in obj) {
  var item = obj[key];
  if(key == "xtype") {
   continue;
  }
  if(item.constructor == String) {
   this.appendAttr(key, item);
  }
  if(item.constructor == Array) {
   arrayMap[key] = item;
  }
 }
 this.appendFlagBeginE();
 for(var key in arrayMap) {
  var items = arrayMap[key];
  for(var i=0;i<items.length;i++) {
   this.convert(items[i]);
  }
 }
 this.appendFlagEnd(nodeName);
};
Nach dem Login kopieren

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben, achten Sie bitte auf andere verwandte Themen Artikel auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Welche Methoden gibt es zum Parsen von Json?

Was sind die Methoden für JS, um Json zu beurteilen?

Detaillierte Erläuterung der JSONP-Prinzipien und Fallanalyse

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie XML und JSON zwischen JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage