Trabajo en una empresa pequeña y nuestro sistema de producción utiliza una API RESTful enrollada a mano, implementada en Java con JAXB. Ahora descubrimos que nos enfrentamos a clientes que usan Ruby on Rails, y tengo que crear una implementación de referencia para mostrarles a los clientes cómo usar nuestra API en Ruby. Me encantaría poder decirles que usen ActiveResource, pero el XML requerido por nuestra API usa (y absolutamente lo requiere) espacios de nombres. Lamentablemente, ya tenemos varios otros clientes que ya han integrado esta API, por lo que no es posible eliminar el uso de espacios de nombres. ¿Cuál es la mejor forma de generar XML con espacios de nombres en Ruby?Soporte de Ruby para espacios de nombres XML
Respuesta
"Mejor" obviamente depende de sus necesidades.
La forma más rápida para generar XML en cualquier rubí es utilizar libxml-ruby - link to rdoc. Si su servidor recibe algún tipo de carga, este será el camino a seguir.
El manera más sencilla de generar XML en cualquier rubí es utilizar REXML ya que es parte de la biblioteca estándar y por lo tanto, "simplemente funciona". Si su generación de XML es algo que casi nunca se usa, probablemente sea más fácil ir con rexml.
Ambas apoyo espacios de nombres XML - Controlar las rdocs para averiguar cómo configurar y obtener espacios de nombres
me encuentro en una situación idéntica, casi como la suya (API REST hace con JAXB w/espacios de nombres).
Creo que el proyecto más prometedor para trabajar con XML en Ruby es HappyMapper. Es un tipo de biblioteca de enlace XML (en la línea de una implementación temprana de tipo JAXB). Ha estado ganando mucha tracción recientemente, y algunos de nosotros hemos estado trabajando para proporcionar un buen soporte del espacio de nombres.
El proyecto reside aquí: http://happymapper.rubyforge.org/
con la fuente aquí: http://github.com/jnunemaker/happymapper/tree/master
El proyecto actualmente no es compatible con la creación de XML de rubí objetos, y el autor original no ha expresado el deseo de proporcionar ese soporte, pero voy a estar comprometiendo alguna funcionalidad para eso en mi fork: http://github.com/jimmyz/happymapper/tree/master
Espero que esto ayude.
- Jimmy Zimmerman
- 1. Predefinir espacios de nombres XML para DataContractSerializer
- 2. ¿Analizar espacios de nombres XML?
- 3. Espacios de nombres XML y atributos
- 4. cómo agregar espacios de nombres XML
- 5. serialización XML + espacios de nombres (C#)
- 6. HTML 5 Agregar espacios de nombres XML
- 7. uso de LINQ to XML con espacios de nombres XML
- 8. ¿Para qué son los espacios de nombres XML?
- 9. C# deserialización de xml con múltiples espacios de nombres posibles
- 10. Como recuperar espacios de nombres de archivos XML utilizando XPath
- 11. Parse XML con XPath y espacios de nombres en Java
- 12. ¿Cómo 'seleccionar' desde XML con espacios de nombres?
- 13. .NET XML Deserialization ignora los espacios de nombres
- 14. Múltiples espacios de nombres XML en la etiqueta con LXML
- 15. Ejecutable basado en Ruby Thor con espacios de nombres
- 16. Espacios de nombres en JSON
- 17. analizar XML con espacios de nombres en Java utilizando XPath
- 18. ¿Cómo deserializo los espacios de nombres XML en C# (System.Xml.Serialization)?
- 19. JAXB: ¿Cómo se puede deserializar XML sin espacios de nombres
- 20. Acceso a atributos XML con espacios de nombres
- 21. ¿Por qué hay URL en espacios de nombres XML?
- 22. cómo generar documentos XML con espacios de nombres en Python
- 23. Cómo crear y usar espacios de nombres XML?
- 24. espacios de nombres XElement (¿Cómo?)
- 25. StAX y espacios de nombres
- 26. ¿Los espacios de nombres son malos para el rendimiento? (PHP)
- 27. Animaciones de espacios de nombres
- 28. Cómo seleccionar nodos XML con espacios de nombres XML de un XmlDocument?
- 29. XML a JSON: trata de espacios de nombres xml y alias en JavaScript
- 30. XSD con importaciones y espacios de nombres
El rendimiento no es realmente un problema aquí, así que dudé a ir con REXML ya que parecía que la solución más rápida, más sencilla y funcionó bastante bien. Muchas gracias por su respuesta. –