Fonctionne sur votre appareil · Votre fichier ne quitte jamais votre appareil.
Collez ou déposez du JSON et obtenez un document XML avec une déclaration en tête et un élément par clé. Un document qui n’a qu’une seule clé au premier niveau l’utilise comme élément racine ; tout le reste va dans <root>. Une liste devient des éléments répétés portant le nom de sa clé – "items": [..] donne plusieurs éléments <items> – et une liste au premier niveau devient des éléments <item> sous <root>.
Les clés qui commencent par @ deviennent des attributs, et une clé "#text" devient le texte de l’élément – la forme qu’écrit l’outil XML en JSON : un document converti là-bas revient ici sous la forme du même XML. Toute autre valeur est du texte dans son élément, null devient un élément vide, et le document est indenté de deux espaces par niveau. Les clés que XML n’accepte pas comme noms – qui commencent par un chiffre, contiennent des espaces ou des symboles – sont assainies avec des tirets bas pour que le résultat s’analyse toujours.
Le texte est correctement échappé (&, <, > et, dans les attributs, les guillemets et sauts de ligne) ; les caractères de contrôle, que XML 1.0 ne peut pas contenir du tout, sont retirés. L’encodage est UTF-8, et vous voyez les 200 premières lignes avant de télécharger. Rien n’est envoyé.
Ne convient pas pour : Respecter un schéma XML précis (SOAP, RSS, une norme de facture) – les noms d’éléments suivent vos clés JSON, pas un schéma.
Une clé qui commence par @ devient un attribut, et une clé "#text" devient le texte de l’élément : {"item": {"@id": 3, "#text": "A"}} donne <item id="3">A</item>. Quand le document n’a qu’une seule clé au premier niveau, cette clé est l’élément racine ; sinon, tout va dans <root>.
Un caractère que XML n’accepte pas dans un nom devient un tiret bas, et un nom qui commence par un caractère interdit en première position, comme un chiffre, en reçoit un devant : "1re place" devient <_1re_place>. Un deux-points n’est gardé que si son préfixe est déclaré plus haut, comme dans "@xmlns:soap" ; un "soap:Body" non déclaré devient <soap_Body>, car aucun analyseur qui gère les espaces de noms ne le lirait autrement. Les lettres de toutes les écritures sont admises : une clé comme "اسم" ou "名前" reste telle qu’elle est écrite.
Chaque valeur est écrite en texte, et les nombres exactement comme dans le JSON : 1.0 reste 1.0 et 12345678901234567890 garde tous ses chiffres. null et un objet vide deviennent tous deux un élément vide comme <note/>, et une liste vide n’écrit rien du tout : le XML ne permet donc pas de distinguer ces trois cas.
Les caractères de contrôle, de code inférieur à 32 hormis la tabulation, le saut de ligne et le retour chariot, ne peuvent pas du tout s’écrire en XML 1.0, pas même sous forme de nombre comme  : ils sont donc retirés. Un retour chariot est écrit pour qu’un analyseur le conserve. Dans les valeurs d’attributs, les guillemets, tabulations et sauts de ligne sont eux aussi écrits sous forme de références, car un analyseur les changerait sinon en espaces.
Des éléments répétés ne peuvent exprimer qu’un seul niveau de liste. "m": [[1, 2], [3]] devient trois éléments <m> contenant 1, 2 et 3, et le fait que 1 et 2 allaient ensemble est perdu. Une liste au premier niveau se comporte de la même façon : [1, [3, 4]] donne trois éléments <item>. Si le regroupement compte, enveloppez d’abord chaque liste intérieure dans un objet : [{"values": [1, 2]}, {"values": [3]}] donne deux éléments <item>, chacun avec son propre <values>.
Un document passé par /xml-to-json revient sous la forme des mêmes éléments, attributs, préfixes d’espaces de noms et textes, sans enveloppe supplémentaire. Ce que le JSON n’a jamais contenu ne revient pas : les commentaires et le DOCTYPE, la position du texte entre des éléments enfants, et l’ordre entre des éléments de noms différents, qui reviennent regroupés par nom. Si la détection des types était activée dans /xml-to-json, une valeur comme TRUE revient sous la forme true ; désactivez-la là-bas pour un aller-retour mot pour mot.
Cette page dans d’autres langues: English · العربية · Deutsch · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা