Convertir XML a JSON: Deja de escribir analizadores para cada API que todavía use XML

Un procesador de pagos con el que me integré el mes pasado enviaba sus devoluciones de webhook en XML. El resto de nuestra pila tecnológica usaba JSON: frontend en TypeScript, backend en Node, MongoDB. De repente tuve que escribir un analizador XML para un único punto de conexión. Busqué un conversor que no enviara datos de transacciones financieras a servidores de terceros, no encontré ninguno y lo desarrollé directamente dentro de Formly.

El XML no ha muerto. Solo parece que sí. Las API SOAP, fuentes RSS, aserciones SAML, portales de datos gubernamentales, sistemas ERP empresariales: todos siguen usando XML. Y si trabajas con suficientes sistemas distintos, tarde o temprano necesitarás conectar XML y JSON. Esto es lo que he aprendido sobre cómo hacerlo sin perder información en el proceso.

La conversión es más complicada de lo que parece

A primera vista, convertir XML a JSON suena como un problema de análisis sencillo. En la práctica, el XML cuenta con funcionalidades para las que el JSON no tiene equivalentes, y los conversores deficientes las eliminan sin avisar.

Los atributos XML son los más afectados. Mira este ejemplo:

<customer id="4821" type="business"> <name>Acme Corp</name> </customer>

Un conversor básico genera {"customer":{"name":"Acme Corp"}} y los valores id y type desaparecen. La especificación XML del W3C define los atributos como metadatos de los elementos: no son "información adicional", sino parte del modelo de datos. He visto equipos sufrir este error al convertir respuestas SAML, donde todos los atributos de seguridad residen exclusivamente en los atributos del elemento.

Prefiero los conversores que anteponen un @ a los atributos o los agrupan bajo una clave específica, para poder r

Sam Taylor Written by Sam Taylor — Full-Stack Developer. I build tools that process data in the browser so you don't have to trust a server. More about me →