Ferramenta Grep para XML [fechada]


22

Estou procurando uma boa ferramenta para executar operações semelhantes a grep em XML - por exemplo, extrair apenas alguns atributos.

Grep ela mesma não pode lidar com isso - qualquer ferramenta equivalente ao DFA pode lidar apenas com correspondências não recursivas e a minha pode ser recursiva.

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

Alguma recomendação?

Edição: Eu prefiro ferramentas de código aberto que funcionam bem no Linux.

Respostas:


21

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

O site XMLStarlet descreve da seguinte maneira.

O XMLStarlet é um conjunto de utilitários de linha de comando (ferramentas) que podem ser usados ​​para transformar, consultar, validar e editar documentos e arquivos XML usando um conjunto simples de comandos shell da mesma maneira que é feito para arquivos de texto sem formatação usando UNIX grep, sed, comandos awk, diff, patch, join, etc.

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

Também há binários do Windows no SourceForge.

Para uma pequena introdução, consulte Iniciar o trabalho da IBM com o XMLStarlet .


Remova a barra à direita do primeiro link.
Bkkbrad 23/08/2009

Não consigo fazê-lo funcionar ... Ele nunca corresponde a nenhum xpath, exceto '/' (o documento inteiro), o que é bastante inútil :(
Hendy Irawan

@HendyIrawan - Tem certeza de que não é assim que você está tentando usar o xpath? (Como seu XML tem um namespace padrão que você não está representando?)
Daniel Haley

Eu tentei cloná-lo, mas parece que o repositório está quebrado.
Hola Soy Edu Feliz Navidad

5

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


5

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

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

Linha de comando de amostra (extraindo postagens editadas após meados de fevereiro a partir do triology Data Dump ):

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

A instalação é fácil. Ou

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

ou


Mais Informações:

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


Corrigi um link quebrado, mas o link de despejo de dados da triologia também está quebrado. Eu vou ver o que eu posso fazer.
Peter Mortensen


0

Eu recomendaria NÃO usar uma ferramenta semelhante a grep em XML, mas usar uma biblioteca para analisar XML em vez disso.
Para que exatamente você precisa? Alguma linguagem de programação? Acho que o analisador XML interno do .NET se ajustaria facilmente ao trabalho, se você estiver disposto a escrever um programa para ele.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.