Convertidor de Swift a XML
Pega structs de Swift o una instancia con datos. Recibes XML limpio de vuelta.
Qué hace esta herramienta
Si alguna vez tuviste que escribir a mano XML que replicara un struct de Swift — para un plist, un cliente SOAP hablando con un ERP heredado o un fixture de test para XMLParser — ya sabes la cantidad de llaves que acabas tecleando. Pega el Swift aquí y recibirás XML bien formado de una sola pasada. Un único struct, un archivo con varios structs y enums, o una instancia rellena let order = Order(...) — mismo resultado: un documento XML completo con todas las propiedades preservadas.
No es un simple reemplazo de cadenas. El conversor sabe cómo serializa Swift de verdad — más o menos como lo haría un XMLEncoder basado en Codable. Los valores Decimal salen como texto numérico plano, Date se convierte en string ISO-8601, UUID toma el formato hexadecimal estándar 8-4-4-4-12, y Optional<T> con nil se convierte en un elemento vacío en lugar de desaparecer. Los arrays siguen una forma de contenedor consistente — cada array se vuelve un elemento wrapper con un hijo por ítem, nombrado según el tipo del elemento.
Las personalizaciones de Coding también se respetan. Un enum CodingKeys: String, CodingKey anidado renombra las propiedades en la salida, así que orderId puede aparecer como OrderId en el XML sin que toques el struct. Los structs y enums anidados se expanden inline. Si pegas varios tipos, cada uno aterriza en la salida con su forma intacta — el conversor sigue los mismos objetivos generales que las Swift API Design Guidelines, así que los nombres y el casing quedan predecibles.
Cómo usarlo
Tres pasos. Funciona igual si pegas un struct de cinco líneas o un archivo de modelos completo.
Pega tu Swift (o prueba el ejemplo)
Mete tu Swift tal cual en el editor de la izquierda. Un struct, un enum con valores asociados, una instancia let rellena o un archivo con varios tipos — todo vale. Haz clic en Cargar ejemplo si quieres ver primero un caso realista.
No hace falta quitar sentencias import, eliminar @propertyWrappers ni limpiar la sintaxis de Swift. Deja el código como está en Xcode. Solo pégalo.
Dale a Convertir
Haz clic en el botón verde Convertir. La herramienta lee el Swift, preserva cada tipo y propiedad, y construye el XML en una sola pasada. Verás un indicador breve de carga mientras trabaja.
Copia el XML
El panel derecho se llena con XML indentado y bien formado que cualquier parser de XML estándar (XMLParser, lxml, System.Xml, el que quieras) aceptará. Cópialo directamente a tu plist, cuerpo SOAP o fixture de test.
Cuándo te saca de verdad de un apuro
Generación de plist en iOS / macOS
Coge un struct de settings de Swift y obtén un documento XML estilo Info.plist que puedes soltar directamente en Xcode — sin pares <code><key></key></code> tecleados a mano ni bugs de whitespace. Combina bien con las APIs de <a href="https://developer.apple.com/documentation/foundation/propertylistserialization" target="_blank" rel="noopener">PropertyListSerialization</a> de Apple en el lado del decoding.
Clientes SOAP en plataformas Apple
Un tipo de request de Swift tiene que salir de la app como SOAP. Pega el struct, mete el cuerpo XML en SoapUI o Postman y verifica el contrato sin escribir el envelope a mano.
Seeding de fixtures para tests
Convierte una <code>let order = Order(...)</code> rellena de un test unitario en un archivo XML de seed para tests de integración con XCTest, servidores mock o sistemas backend que siguen hablando XML.
Mantener la documentación sincronizada
Genera ejemplos XML para un README, una wiki interna o docs de esquemas basados en XSD directamente desde tus modelos Swift reales, para que la documentación nunca se desincronice del código.
Preguntas frecuentes
¿Puedo pegar varios structs a la vez?
Sí — pega un archivo entero. Cada struct o enum de nivel superior sale con los tipos anidados expandidos y los valores por defecto rellenos. Nada se descarta en silencio.
¿Respeta los CodingKeys?
Sí. Un enum CodingKeys: String, CodingKey anidado renombra las propiedades en la salida XML — case orderId = "OrderId" emite <OrderId> en lugar de <orderId>. Las propiedades que no estén en CodingKeys caen al nombre Swift original. Esto coincide con cómo funciona Codable en la práctica.
¿Cómo maneja Decimal, Date y Optional?
Decimal sale como texto numérico plano. Date sale como string ISO-8601. UUID como string hexadecimal estándar 8-4-4-4-12. Optional<T> con nil se convierte en un elemento vacío en vez de desaparecer — así la forma se mantiene consistente para los consumidores que validan contra un XSD.
¿Y los enums con valores asociados y los arrays?
Los enums con valores asociados salen con un atributo discriminador que nombra el case, más elementos hijo para los valores asociados — suficiente para hacer round-trip. Los arrays se convierten en un elemento contenedor con un hijo por ítem, nombrado según el tipo del elemento. Dictionary<K,V> sale como contenedor de <Entry><Key/><Value/></Entry>.
¿Se guarda mi código?
Tu código se envía al backend para la conversión y no se persiste — no logueamos el payload. Como siempre con herramientas online, si el código es realmente sensible, revísalo antes de pegarlo.
¿Y si el Swift tiene property wrappers, protocolos o propiedades computadas?
Los property wrappers se desempaquetan al valor subyacente en la salida. Los protocolos definen forma, no contenido, así que no producen XML directamente — pero los tipos que los conforman sí. Las propiedades computadas se saltan porque son derivadas, no estado. Si el código tiene errores de sintaxis, arregla primero los obvios — el parser es tolerante pero no adivino.
Otras herramientas que te pueden venir bien
Swift a XML es solo una pieza del puzzle. Estas combinan bien con ella: