Estoy buscando una buena herramienta para realizar operaciones similares a grep en XML; por ejemplo, extraer solo ciertos atributos.
Grep
no puede manejarlo por sí mismo: cualquier herramienta equivalente a DFA solo puede manejar coincidencias no recursivas y la mía puede ser recursiva.
He intentado xgrep , pero es bastante inestable y quiero una herramienta estable y confiable.
¿Alguna recomendación?
EDITAR: Prefiero las herramientas de código abierto que funcionan bien en Linux.
XMLStarlet (Wikipedia) es una herramienta de línea de comandos que se acerca a grep
. Es un software de código abierto (licencia MIT) y funciona bien en Linux y Windows.
El sitio web XMLStarlet lo describe de la siguiente manera.
XMLStarlet es un conjunto de utilidades de línea de comandos (herramientas) que se pueden usar para transformar, consultar, validar y editar documentos y archivos XML usando un conjunto simple de comandos de Shell de manera similar a lo que se hace para archivos de texto sin formato usando UNIX grep, sed, comandos awk, diff, patch, join, etc.
El paquete Debian/Ubuntu se llama xmlstarlet
. Pero cuidado: Al contrario de lo que dice la página de manual, el binario se llama xmlstarlet
en Debian/Ubuntu y no xml
.
También hay binarios de Windows en SourceForge.
Para una pequeña introducción agradable, consulte Comience a trabajar con XMLStarlet de IBM.
Una herramienta que funciona en Linux es xml_grep . Entiende completamente XML y no es una herramienta línea por línea.
xml_grep se incluye como una herramienta independiente en la XML :: Twig paquete. La funcionalidad grepping es bastante poderosa ya que admite especificaciones XPath .
Línea de comandos de muestra (extrayendo publicaciones editadas después de mediados de febrero de volcado de datos de triología ):
xml_grep -p --cond="row[@LastEditDate>'2010-02-14']" posts.xml > lateEditedPosts.xml
La instalación es sencilla. Ya sea
Sudo cpan -i "XML::Twig"
, como se describe en el libro de cocina xml_grep al que se hace referencia a continuación.o
Descargar http://xmltwig.org/xmltwig/XML-Twig-3.34.tar.gz o http://search.cpan.org/CPAN/authors/id/M/ MI/MIROD/XML-Twig-3.34.tar.gz . P.ej. wget http://search.cpan.org/CPAN/authors/id/M/MI/MIROD/XML-Twig-3.34.tar.gz
Extracto: gunzip XML-Twig-3.34.tar.gz; tar -xvf XML-Twig-3.34.tar
Ir a la carpeta: cd XML-Twig-3.34
Instalar en pc: Perl Makefile.PL -y
. Entonces make
, make test
y Sudo make install
.
Más información:
La mejor introducción que he encontrado para xml_grep es libro de cocina xml_grep, alrededor de dos páginas. Otro:
La sintaxis XPath en varios idiomas es la mejor para buscar cosas en xml. De hecho na de las herramientas recomendadas por los creadores de xgrep es básicamente un analizador XML de Perl que acepta entrada XPath.
Aconsejaría NO usar una herramienta similar a grep en XML, sino usar una biblioteca para analizar XML en su lugar.
¿Para qué lo necesita exactamente? ¿Algún lenguaje de programación? Creo que el analizador XML incorporado de .NET se adaptaría fácilmente al trabajo si estás dispuesto a escribir un programa para él.
Actualización : para Linux, una biblioteca de analizador XML muy conocida es libxml2 .
XMLSpy es una herramienta increíble, aunque un poco costosa.