Guía de conversión XML y JSON: Transformación de archivos de configuración y formatos de datos API
Diferencias principales: XML vs JSON
| Característica | XML | JSON |
|---|---|---|
| Formato de datos | Marcado basado en etiquetas | Pares clave-valor |
| Atributos | Sí (<node attr="val">) |
No (los atributos se convierten en campos) |
| Espacios de nombres | Sí (xmlns) |
No |
| Comentarios | Sí (<!-- -->) |
No |
| Arrays | Implícitos (elementos repetidos) | Explícitos ([]) |
| Nodos de texto | Contenido mixto (etiquetas + texto) | Valores de cadena simples |
XML es mejor para datos estilo documento (SVG, HTML, configuraciones). JSON es mejor para datos estructurados (respuestas API).
Cómo los atributos XML se mapean a JSON
Los elementos XML pueden tener tanto atributos como contenido de texto—esta es la parte complicada de la conversión:
Elemento simple
<person name="John" age="30"/>
{
"person": {
"@name": "John",
"@age": "30"
}
}
Convención: use el prefijo
@para los atributos XML. Esta es la regla de conversión más común.
Contenido mixto (Atributos + Texto)
<price currency="USD">68.00</price>
{
"price": {
"@currency": "USD",
"#text": "68.00"
}
}
Use
#textpara el contenido de texto del elemento, distinguiéndolo de los atributos.
Detección de arrays: El problema más común
En XML, los arrays son implícitos—elementos repetidos con el mismo nombre forman un array:
<books>
<book>Three-Body Problem</book>
<book>To Live</book>
</books>
{
"books": {
"book": ["Three-Body Problem", "To Live"]
}
}
Problema: Con un solo elemento, XML no puede distinguirlo de un no-array:
<books>
<book>Three-Body Problem</book>
</books>
Esto podría convertirse en:
{
"books": {
"book": "Three-Body Problem"
}
}
Solución: En la herramienta XML↔JSON, marque "Forzar array" y especifique qué elementos deben siempre tratarse como arrays.
Manejo de espacios de nombres
Los espacios de nombres XML no tienen equivalente directo en JSON:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<m:GetPrice xmlns:m="http://example.com">
<m:Item>123</m:Item>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
Estrategias comunes:
| Estrategia | Descripción | Caso de uso |
|---|---|---|
| Mantener prefijo | soap:Body → "soap:Body" |
Procesamiento SOAP/WSDL |
| Eliminar prefijo | soap:Body → "Body" |
Casos simples, sin conflictos |
| Clave de espacio de nombres | {soap}Body |
Necesidad de distinguir elementos del mismo nombre de diferentes espacios de nombres |
Use el Formateador XML para ordenar el XML antes de la conversión.
Uso de la herramienta XML↔JSON
Paso 1: Abrir la herramienta
Visite la herramienta XML↔JSON y seleccione la dirección de conversión.
Paso 2: Ingresar datos fuente
- XML → JSON: Pegue la cadena XML
- JSON → XML: Pegue la cadena JSON
Puede embellecer la entrada primero con Formateador JSON o Formateador XML.
Paso 3: Configurar opciones de conversión
| Opción | Descripción |
|---|---|
| Prefijo de atributo | Mapear atributos como @attr o $attr |
| Clave de nodo de texto | Mapear contenido de texto como #text o _text |
| Forzar array | Especificar nombres de elementos que siempre deben ser arrays |
| Espacios de nombres | Mantener / eliminar / transformar |
Paso 4: Ejecutar conversión
Haga clic en "Convertir", revise el resultado y copie.
Escenarios prácticos
Migración de archivos de configuración
Muchos proyectos heredados usan configuraciones XML (Spring, Maven). Los proyectos nuevos prefieren YAML/JSON:
pom.xml → package.json (información de dependencias)
spring-config.xml → application.json (configuración de Beans)
SOAP API a REST
Las respuestas SOAP son XML; necesitan conversión a JSON para uso en el front-end:
Respuesta XML SOAP → JSON → renderizado front-end
Extracción de metadatos SVG
SVG es formato XML; extraiga metadatos a JSON para procesamiento programático:
<svg width="100" height="100"> → {"svg": {"@width": "100", "@height": "100"}}
Consideraciones de JSON a XML
Al convertir JSON a XML, tenga en cuenta:
| Consideración | Descripción |
|---|---|
| Elemento raíz | JSON debe tener una única clave raíz |
| Validez del nombre de clave | Los nombres de etiquetas XML no pueden comenzar con un dígito ni contener espacios |
| Envoltura de arrays | Los arrays JSON necesitan un nombre de elemento contenedor |
| Caracteres especiales | <, >, & deben escaparse como entidades |
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
| Elemento único no convertido a array | XML no puede distinguir elemento único de array | Marque "Forzar array" |
| Atributos perdidos | Reglas de conversión sin prefijo de atributo | Verifique la configuración de prefijo de atributo |
| Conflicto de espacios de nombres | Elementos del mismo nombre en diferentes espacios de nombres | Mantenga los prefijos de espacios de nombres |
| Error de JSON a XML | Nombre de clave no válido | Renombre la clave para cumplir con la especificación XML |
| Contenido mixto perdido | Clave de nodo de texto no correctamente mapeada | Verifique la configuración #text |
Resumen
La conversión XML↔JSON es una necesidad común en migración de formatos de datos e integración de APIs. Comprender los tres problemas principales—mapeo de atributos, detección de arrays y espacios de nombres—es clave para una conversión correcta. La herramienta XML↔JSON proporciona opciones de conversión flexibles, mientras que Formateador JSON y Formateador XML completan su flujo de trabajo de conversión de formatos.