Ferramenta Grep para XML [fechada]

22

Estou procurando uma boa ferramenta para realizar operações semelhantes ao grep no XML - por exemplo, extrair apenas determinados atributos.

O Grep em si não pode lidar com isso - qualquer ferramenta equivalente ao DFA pode manipular somente correspondências não recursivas, e a minha pode ser recursiva.

Eu tentei o xgrep , mas ele é bastante instável e quero uma ferramenta estável e confiável.

Alguma recomendação?

EDIT: Eu prefiro ferramentas de código aberto que funcionem bem no Linux.

    
por Adam Matan 05.08.2009 / 14:59

5 respostas

21

XMLStarlet (Wikipedia) é uma ferramenta de linha de comando que se aproxima de grep . É um software de código aberto (licença MIT) e funciona bem no Linux e no Windows.

O site XMLStarlet descreve o seguinte:

XMLStarlet is a set of command line utilities (tools) which can be used to transform, query, validate, and edit XML documents and files using simple set of shell commands in similar way it is done for plain text files using UNIX grep, sed, awk, diff, patch, join, etc commands.

O pacote Debian / Ubuntu é denominado xmlstarlet . Mas cuidado: Ao contrário do que diz a página de manual, o binário é denominado xmlstarlet no Debian / Ubuntu e não xml .

Existem também binários do Windows no SourceForge.

Para uma boa introdução, consulte Comece a trabalhar com o XMLStarlet .

    
por 05.08.2009 / 15:31
5

A sintaxe XPath em vários idiomas é melhor para encontrar coisas em xml. Na verdade, uma das ferramentas recomendada pelos criadores do xgrep é basicamente um analisador XML Perl que aceita entrada XPath.

    
por 05.08.2009 / 15:06
5

Uma ferramenta que funciona no Linux é xml_grep . Ele entende completamente o XML e não é uma ferramenta linha por linha.

xml_grep está incluído como uma ferramenta stand-alone no XML :: Twig pacote. A funcionalidade grepping é bastante poderosa, pois suporta especificações XPath .

Exemplo de linha de comando (extração de postagens editadas após meados de fevereiro do Descarga de dados de triologia ):

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

A instalação é fácil. Qualquer um

  • sudo cpan -i "XML::Twig" , conforme descrito no livro de receitas xml_grep mencionado abaixo.

ou

  • Faça o download do link ou link . Por exemplo. wget http://search.cpan.org/CPAN/authors/id/M/MI/MIROD/XML-Twig-3.34.tar.gz

  • Extrair: gunzip XML-Twig-3.34.tar.gz; tar -xvf XML-Twig-3.34.tar

  • Ir para a pasta: cd XML-Twig-3.34

  • Instale: perl Makefile.PL -y . Então make , make test e sudo make install .

Mais informações:

A melhor introdução que encontrei para xml_grep é livro de receitas xml_grep , cerca de duas páginas. Outro:

por 06.03.2010 / 23:20
0

XMLSpy é uma ferramenta incrível, ainda que um pouco cansativa.

    
por 05.08.2009 / 15:16
0

Eu aconselharia que NÃO usasse uma ferramenta do tipo grep em XML, mas usasse uma biblioteca para analisar o XML em seu lugar.
O que exatamente você precisa para isso? Alguma linguagem de programação? Eu acho que o analisador XML integrado do .NET se encaixaria no trabalho facilmente se você estiver disposto a escrever um programa para ele.

Atualização : para o Linux, uma biblioteca de analisadores XML bem conhecida é libxml2 .

    
por 05.08.2009 / 15:04