2009-02-06 19 views
8

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?

+0

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. –

Respuesta

8

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.

1

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.

4

Mi primera toma sería "nunca" ... pero quizás tiene su lugar. Estoy de acuerdo con eljenso en que ha sido superado por la competencia.

Así que para una buena vinculación/mapeo de objetos eficiente y simple, JAXB es mucho mejor, o XStream. Mucho más conveniente y aún más rápido.

Cuestiones relacionadas