2009-01-28 8 views
31

He intentado muchos de los analizadores de Perl XML. Estaba bastante interesado en el analizador Sablotron, pero es tan doloroso instalarlo en una caja de Windows. Actualmente he comenzado a usar XML::LibXML y XML::LibXSLT, los cuales parecen hacer todo lo que necesito.¿Cuál es el mejor analizador de XML para Perl?

Parecen ser bastante estándar también. ¿Hay mejores analizadores de XML para usar que esto?

+2

El "mejor" analizador XML es el que satisface sus necesidades. No mencionó el tipo de análisis XML que necesita: lineal (SAX), árbol (DOM), iterativo (pull parser), etc. por lo que ofrecer sugerencias será difícil. –

Respuesta

24

Creo que estás usando una muy buena. XML::LibXML, Matt Sergeant y la interfaz Perl de Christian Glahn para Daniel Velliard's libxml2 es uno de los analizadores XML más rápidos que conozco.

+0

Gracias, justo después de la aclaración de que estoy usando la herramienta correcta – Xetius

+0

Sí. Definitivamente no estás usando nada raro ... está muy cerca del estándar. – mmcdole

10

Si necesita velocidad, potencia o funciones, XML :: LibXML es el camino a seguir. Sin embargo, si busca la facilidad de uso, XML::Simple es una alternativa viable.

+0

Sí. Sin embargo, ten cuidado: el hecho de que se llame simple no significa que no debas leer la documentación. – innaM

+0

De hecho, simple (como se usa aquí) es un término relativo .... –

+0

De hecho. XML :: Simple es probablemente una de las herramientas de análisis más simples que he usado en mucho tiempo. :) –

5

En mi experiencia XML::Simple es el mejor para el análisis rápido y sucio de XML. Lo usamos para analizar datos de terceros que no siempre se ajustan al estándar XML. XML :: Simple arroja errores informativos y te permite correr muy rápido.

12

Realmente depende de sus necesidades, como la gente ha dicho. Para analizar archivos XML que tenían ~ 100Mb de tamaño (anotaciones genéticas de TAIR, 1 archivo por cromosoma), usé el módulo XML::Twig de mirod, que le permite establecer devoluciones de llamadas para analizar los elementos que le interesan, presentando cada subdocumento como un XML: : Árbol simple. Combina los beneficios de un analizador SAX (escaneando el archivo como una secuencia) con un analizador DOM (trabajando más fácilmente con las piezas interesantes).

1

Creo que deberías probar XML::MyXML, también. Es muy fácil de usar.

4

(En realidad, no es una respuesta, sino un comentario - sin embargo, no puedo comentar ...)

XML :: Simple se ha mencionado aquí.
(sé que es unos pocos de hace unos años, pero esto apareció en Google hoy ...)

Sin embargo, es el sitio (http://metacpan.org/pod/XML::Simple) ahora dice:

ESTADO DE ESTE MODULO

El se desaconseja el uso de este módulo en el nuevo código. Otros módulos están disponibles que proporcionan interfaces más directas y consistentes. En particular, XML :: LibXML es muy recomendable.

Los principales problemas con este módulo son la gran cantidad de opciones y las formas arbitrarias en que interactúan estas opciones, a menudo con resultados inesperados.

Los parches con correcciones de errores y correcciones de documentación son bienvenidos, pero es poco probable que se agreguen nuevas características.

0

Ofreceré uno que NO DEBE ser utilizado: XML::Parser.

Extiende automáticamente las entidades HTML a sus equivalentes UTF-8, y la opción para desactivar este comportamiento no funciona en la más característica de todas las entidades, &.

Además, su xmlDecl-analizador interpretar y mostrar el atributo standalone en el bloque <?xml ... ?> como "standalone"="1", que es absolutamente incorrecto - debe ser "standalone"="yes".

Cuestiones relacionadas