it-swarm.dev

Převést XML na JSON (a zpět) pomocí Javascript

Jak byste převést z XML na JSON a pak zpět do XML?

Následující nástroje fungují docela dobře, ale nejsou zcela konzistentní:

Setkal se někdo s touto situací dříve?

122
Jason Suárez

Myslím, že je to nejlepší: Konverze mezi XML a JSON

Nezapomeňte si přečíst doprovodný článek na stránkách xml.com O'Reilly , který jde do podrobností o problémech s těmito konverzemi, o kterých si myslím, že najdete osvícení. Skutečnost, že O'Reilly pořádá článek, by měla naznačovat, že Stefanovo řešení má zásluhy.

86
Josh Stodola

https://github.com/abdmob/x2js - vlastní knihovna (aktualizovaná adresa URL z http://code.google.com/p/x2js/ ):

Tato knihovna poskytuje XML pro JSON (JavaScript Objects) a naopak funkce pro konverzi javascriptu. Knihovna je velmi malá a nevyžaduje žádné další knihovny.

Funkce API

  • new X2JS () - pro vytvoření vaší instance pro přístup ke všem funkcím knihovny. Také zde můžete zadat volitelné možnosti konfigurace
  • X2JS.xml2json - Převést XML zadaný jako DOM objekt na JSON
  • X2JS.json2xml - Převod JSON na XML DOM Object
  • X2JS.xml_str2json - Převod XML zadaného jako řetězec na JSON
  • X2JS.json2xml_str - Převést JSON na řetězec XML

Online demo na http://jsfiddle.net/abdmob/gkxucxrj/1/

var x2js = new X2JS();
function convertXml2JSon() {
    $("#jsonArea").val(JSON.stringify(x2js.xml_str2json($("#xmlArea").val())));
}

function convertJSon2XML() {
    $("#xmlArea").val(x2js.json2xml_str($.parseJSON($("#jsonArea").val())));
}

convertXml2JSon();
convertJSon2XML();
$("#convertToJsonBtn").click(convertXml2JSon);
$("#convertToXmlBtn").click(convertJSon2XML);
40
abdolence

Tyto odpovědi mi pomohly udělat tuto funkci:

function xml2json(xml) {
  try {
    var obj = {};
    if (xml.children.length > 0) {
      for (var i = 0; i < xml.children.length; i++) {
        var item = xml.children.item(i);
        var nodeName = item.nodeName;

        if (typeof (obj[nodeName]) == "undefined") {
          obj[nodeName] = xml2json(item);
        } else {
          if (typeof (obj[nodeName].Push) == "undefined") {
            var old = obj[nodeName];

            obj[nodeName] = [];
            obj[nodeName].Push(old);
          }
          obj[nodeName].Push(xml2json(item));
        }
      }
    } else {
      obj = xml.textContent;
    }
    return obj;
  } catch (e) {
      console.log(e.message);
  }
}

Dokud jdete v objektu jquery dom/xml: pro mě to bylo:

Jquery(this).find('content').eq(0)[0]

kde obsah bylo pole, ve kterém jsem ukládal svůj XML.

18
Ryan Conrad

Osobně bych doporučil tento nástroj . Jedná se o převodník XML na JSON.

Je velmi lehký a je v čistém JavaScriptu. Nepotřebuje žádné závislosti. Můžete jednoduše přidat funkce do svého kódu a použít je podle svého přání. 

To také bere atributy XML do úvah.

var xml = ‘<person id=”1234” age=”30”><name>John Doe</name></person>’;
var json = xml2json(xml); 

console.log(json); 
// prints ‘{“person”: {“id”: “1234”, “age”: “30”, “name”: “John Doe”}}’

Zde je online demo !

2
Samuel Bourgault

Zatímco jsem napsal tento nástroj https://bitbucket.org/surenrao/xml2json pro aplikaci TV Watchlist, doufám, že to také pomůže.

Synopsys: Knihovna, která nejen převádí xml na json, ale je také snadno laditelná (bez kruhových chyb) a znovu vytváří json zpět do XML. Vlastnosti: - Parse xml objektu json. Vytiskněte objekt json zpět do XML. Lze použít k uložení XML v IndexedDB jako objektů X2J. Vytisknout objekt json.

2
surya

Můžete použít CodVerter XML ​​na JSON a JSON na XML nástroje.
Je to online, ale vysoce bezpečné a vše, co děláte, je interpretováno na vašem lokálním počítači a nikdy není odesláno zpět na server (je to hranaté SPA, takže konverze je přes čistý Javascript). 
Chybová hlášení o ověření jsou informativní a přesná.

(Úplné zveřejnění: Jsem jeden z vývojářů).

Příklad konvertoru JSON na XML: enter image description here

Příklad XML do JSON Converter: enter image description here

1
jonathana

Disclaimer: Napsal rychle-xml-parser

Rychlý XML Parser může pomoci převést XML na JSON a naopak. Zde je příklad;

var options = {
    attributeNamePrefix : "@_",
    attrNodeName: "attr", //default is 'false'
    textNodeName : "#text",
    ignoreAttributes : true,
    ignoreNameSpace : false,
    allowBooleanAttributes : false,
    parseNodeValue : true,
    parseAttributeValue : false,
    trimValues: true,
    decodeHTMLchar: false,
    cdataTagName: "__cdata", //default is 'false'
    cdataPositionChar: "\\c",
};
if(parser.validate(xmlData)=== true){//optional
    var jsonObj = parser.parse(xmlData,options);
}

Pokud chcete analyzovat objekt JSON nebo JS do XML

//default options need not to set
var defaultOptions = {
    attributeNamePrefix : "@_",
    attrNodeName: "@", //default is false
    textNodeName : "#text",
    ignoreAttributes : true,
    encodeHTMLchar: false,
    cdataTagName: "__cdata", //default is false
    cdataPositionChar: "\\c",
    format: false, 
    indentBy: "  ",
    supressEmptyNode: false
};
var parser = new parser.j2xParser(defaultOptions);
var xml = parser.parse(json_or_js_obj);
0
Amit Kumar Gupta

Zde 'dobrý nástroj z zdokumentované a velmi slavné npm knihovny, která dělá xml <-> konverze velmi dobře: jinak než některé (možná všechny) z výše uvedených řešení, to převádí xml komentáře také.

var obj = {name: "Super", Surname: "Man", age: 23};

var builder = new xml2js.Builder();
var xml = builder.buildObject(obj);
0
SimoneMSR