De todas las bibliotecas para ingresar y enviar xml con java, ¿en qué circunstancias commons-digester es la herramienta de elección?¿Cuándo y por qué usaría Apache commons-digester?
Respuesta
Desde el digester wiki
¿Por qué usar digestor?
Digester es una capa en la parte superior de la API del analizador SAX xml para facilitar la entrada al proceso xml. En particular, el digestor hace que sea fácil crear y inicializar un árbol de objetos basado en un archivo de entrada xml.
El uso más común para el digestor es proceso de configuración con formato XML archivos, la construcción de un árbol de objetos en base a esa información.
Tenga en cuenta que digestor puede crear y inicializar objetos verdaderos, es decir, lo que se que se relacionan con los objetivos de negocio de la aplicación y tienen comportamientos reales. Muchas otras herramientas tienen un objetivo diferente : para construir un modelo de los datos en el documento XML de entrada, como un DOM W3C pero un poco más amigable.
y
Y a diferencia de las herramientas que generan clases, puede escribir las clases de su aplicación primero, y luego más adelante decide utilizar digestor para construir desde un archivo de entrada XML. El resultado es que sus clases son reales clases con comportamientos reales, que han sido inicializados desde un archivo xml , en lugar de simples "estructuras" que solo contienen datos.
Como un ejemplo de lo que no se utiliza para:
Sin embargo, si usted está buscando una representación directa del documento XML de entrada, como de datos en lugar de objetos verdaderos, entonces digestor es no para ti; DOM, jDOM u otras más herramientas de enlace directo serán más apropiadas.
Por lo tanto, el digestor mapeará XML directamente en objetos java. En algunos casos, eso es más útil que tener que leer el árbol y extraer las opciones.
Si desea crear e inicializar objetos "verdaderos" de XML, use un contenedor de granos decente, como el proporcionado por Spring.
Además, leer en el XML y procesarlo usted mismo usando XPath, o usar herramientas de enlace Java/XML como Castor, son buenas y tal vez más alternativas estándar.
He trabajado con el Digester cuando uso Struts, pero parece que ha sido superado por otras herramientas y marcos para los posibles usos que tiene.
- 1. ¿Por qué usaría Apache ServiceMix solo en ActiveMQ?
- 2. Cuándo usaría mmap
- 3. Multithreading: ¿Cuándo usaría un Join?
- 4. ¿Cuándo usaría Java collections singletonMap method?
- 5. ¿Cuándo usaría un Dominio de aplicación?
- 6. ¿Cuándo desechar y por qué?
- 7. ¿Por qué alguien usaría Collections.emptyList en java?
- 8. ¿Por qué un desarrollador usaría Silverlight?
- 9. Twisted, gevent eventlet - Cuándo los usaría
- 10. ¿Cuándo nos usaría Ext.application() vs. Ext.Loader.setConfig, .require y .onReady?
- 11. ¿Qué hace static_assert y para qué lo usaría?
- 12. ¿Cuándo usaría XML en lugar de SQL?
- 13. Atributos personalizados HTML5 - ¿Por qué los usaría?
- 14. ¿Cuándo usaría XML sobre JSON para Ajax?
- 15. ¿Cuándo usaría un delegado en asp.net?
- 16. ¿Qué ventajas tiene usar Oslo y M y cuándo lo usaría?
- 17. ¿Cuándo usaría AutoResetEvent y ManualResetEvent en lugar de Monitor.Wait()/Monitor.Pulse()?
- 18. ¿Cuándo o por qué usaría una unión externa derecha en lugar de izquierda?
- 19. ¿Cuándo y por qué debería usar TStringBuilder?
- 20. ¿Por qué y cuándo usar LINQ?
- 21. cuándo y por qué uso JumboEnumSet
- 22. Cuándo usar IEquatable Y por qué
- 23. ¿Cuándo y por qué usar malloc?
- 24. ¿Por qué y cuándo necesito Azure?
- 25. ¿Cuándo y por qué elevaría un objeto?
- 26. ¿Para qué usaría Stackless Python?
- 27. ¿Por qué alguna vez usaría una DoublyLinkedList en PHP?
- 28. ¿Por qué alguien usaría C en lugar de C++?
- 29. ¿Por qué no usaría un comodín en mi classpath?
- 30. ¿Qué son los árboles de expresión, cómo los usa y por qué los usaría?
Una respuesta tardía: apache digester no es un analizador completo y, a veces puede ser muy lento. Hay una nueva opción llamada extended vtd-xml que puede procesar documentos xml de hasta 256 GB, es compatible con Xpath completo y mapa de mem. –