Herramienta Grep para XML [cerrado]

22

Estoy buscando una buena herramienta para realizar operaciones grep-like en XML, por ejemplo, extraer solo ciertos atributos.

Grep en sí mismo no puede manejarlo: 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 herramientas de código abierto que funcionan bien en Linux.

Adam Matan
fuente

Respuestas:

21

XMLStarlet (Wikipedia) es una herramienta de línea de comandos que se acerca 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 utilizando un conjunto simple de comandos de shell de forma similar a como se hace para archivos de texto sin formato con UNIX grep, sed, Comandos awk, diff, patch, join, etc.

Se nombra el paquete Debian / Ubuntu xmlstarlet. Pero cuidado: al contrario de lo que dice la página de manual, el binario se nombra xmlstarleten Debian / Ubuntu y no xml.

También hay binarios de Windows en SourceForge.

Para una pequeña introducción agradable, vea Comenzar a trabajar de IBM con XMLStarlet .

Ludwig Weinzierl
fuente
Elimine la barra diagonal final del primer enlace.
Bkkbrad
No puedo hacer que funcione ... Nunca coincide en ningún xpath excepto '/' (todo el documento), que no vale nada :(
Hendy Irawan
@HendyIrawan: ¿estás seguro de que no es así como intentas usar xpath? (¿Al igual que su XML tiene un espacio de nombres predeterminado que no tiene en cuenta?)
Daniel Haley
Traté de clonarlo, pero parece que el repositorio está roto.
Hola Soy Edu Feliz Navidad
5

La sintaxis XPath en varios idiomas es la mejor para encontrar cosas en xml. De hecho, una de las herramientas recomendadas por los creadores de xgrep es básicamente un analizador XML Perl que acepta la entrada XPath.

jweede
fuente
5

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 el paquete XML :: Twig . La funcionalidad grepping es bastante poderosa ya que admite las especificaciones XPath .

Ejemplo de línea de comandos (extracción de publicaciones editadas después de mediados de febrero desde el volcado de datos de la triología ):

xml_grep -p --cond="row[@LastEditDate>'2010-02-14']"  posts.xml  > lateEditedPosts.xml

La instalación es fácil. 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


Más información:

La mejor introducción que he encontrado para xml_grep es xml_grep cookbook , de aproximadamente dos páginas. Otro:

Peter Mortensen
fuente
He arreglado un enlace roto, pero el enlace de volcado de datos de triología también está roto. Veré que puedo hacer.
Peter Mortensen
0

XMLSpy es una herramienta increíble, aunque un poco costosa.

JP Alioto
fuente
0

Aconsejaría NO usar una herramienta grep-like en XML, sino usar una biblioteca para analizar XML en su lugar.
¿Para qué lo necesitas exactamente? Cualquier lenguaje de programación? Sin embargo, creo que el analizador XML incorporado .NET encajaría fácilmente si está dispuesto a escribir un programa para él.

Actualización : para Linux, una biblioteca de analizador XML bien conocida es libxml2 .

fretje
fuente