Funciona en tu dispositivo · Tu archivo nunca sale de tu dispositivo.
Pega o suelta JSON y obtén un documento XML con su declaración arriba y un elemento por clave. Un documento con una sola clave de primer nivel la usa como elemento raíz; todo lo demás va dentro de <root>. Una lista se convierte en elementos repetidos con el nombre de su clave – "items": [..] da varios elementos <items> – y una lista de primer nivel se convierte en elementos <item> dentro de <root>.
Las claves que empiezan por @ pasan a ser atributos y una clave "#text" pasa a ser el texto del elemento – la forma que escribe la herramienta XML a JSON, así que un documento convertido allí vuelve aquí como el mismo XML. Cualquier otro valor es texto dentro de su elemento, null pasa a ser un elemento vacío, y el documento lleva dos espacios de sangría por nivel. Las claves que XML no admite como nombre – que empiezan por un dígito o contienen espacios o símbolos – se sanean con guiones bajos para que el resultado siempre se pueda analizar.
El texto se escapa correctamente (&, <, > y, en los atributos, las comillas y los saltos de línea); los caracteres de control, que XML 1.0 no puede contener de ninguna forma, se eliminan. La codificación es UTF-8 y ves las primeras 200 líneas antes de descargar. No se sube nada.
No sirve para: Ajustarse a un esquema XML concreto (SOAP, RSS, una norma de factura electrónica) – los nombres de elemento siguen tus claves JSON, no un esquema.
Una clave que empieza por @ pasa a ser un atributo, y una clave "#text" pasa a ser el texto del elemento, así que {"item": {"@id": 3, "#text": "A"}} da <item id="3">A</item>. Cuando el documento tiene una sola clave de primer nivel, esa clave es el elemento raíz; si no, todo va dentro de <root>.
Un carácter que XML no admite en un nombre se convierte en un guion bajo, y un nombre que empieza por un carácter que no puede ir primero, como un dígito, recibe uno delante: "1er puesto" pasa a <_1er_puesto>. Los dos puntos solo se conservan cuando su prefijo está declarado más arriba, como en "@xmlns:soap"; un "soap:Body" sin declarar pasa a <soap_Body>, porque ningún analizador que tenga en cuenta los espacios de nombres lo leería de otro modo. Se admiten letras de cualquier escritura, así que una clave como "año", "اسم" o "名前" se queda tal cual.
Cada valor se escribe como texto, y los números exactamente como los tiene el JSON: 1.0 sigue siendo 1.0 y 12345678901234567890 conserva todas sus cifras. null y un objeto vacío dan los dos un elemento vacío, como <note/>, y una lista vacía no escribe nada, así que el XML no puede distinguir estos tres casos.
Los caracteres de control, es decir, los códigos por debajo de 32 que no son el tabulador, el salto de línea ni el retorno de carro, no se pueden escribir en XML 1.0 de ninguna forma, ni siquiera como un número del tipo , así que se eliminan. Un retorno de carro se escribe como para que el analizador lo conserve. En los valores de atributo, las comillas, los tabuladores y los saltos de línea también se escriben como referencias, porque si no un analizador los convertiría en espacios.
Los elementos repetidos solo pueden expresar un nivel de lista. "m": [[1, 2], [3]] se convierte en tres elementos <m> con 1, 2 y 3, y se pierde que 1 y 2 iban juntos. Una lista de primer nivel se comporta igual: [1, [3, 4]] da tres elementos <item>. Si la agrupación importa, envuelve antes cada lista interior en un objeto: [{"values": [1, 2]}, {"values": [3]}] da dos elementos <item>, cada uno con su propio <values>.
Un documento que pasó por /xml-to-json vuelve con los mismos elementos, atributos, prefijos de espacio de nombres y texto, sin ningún envoltorio añadido. Lo que el JSON nunca guardó no vuelve: los comentarios y el DOCTYPE, la posición del texto entre elementos hijos, y el orden entre elementos de nombres distintos, que vuelven agrupados por nombre. Si la detección de tipos estaba activada en /xml-to-json, un valor como TRUE vuelve como true; desactívala allí para un viaje de ida y vuelta palabra por palabra.
Más en Hojas de cálculo y datos
Esta página en otros idiomas: English · العربية · Deutsch · Français · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা