L'outil Grep pour XML

Je recherche un bon outil pour effectuer des opérations de type grep sur XML, par exemple, extraire certains attributs uniquement.

Grep lui-même ne peut pas le gérer – tout outil équivalent DFA ne peut gérer que des correspondances non récursives, et le mien peut être récursif.

J'ai essayé xgrep , mais c'est assez instable, et je veux un outil stable et fiable.

Des recommandations?

EDIT: Je préfère les outils open source qui fonctionnent bien sous Linux.

XMLStarlet (Wikipedia) est un outil de ligne de commande proche de grep . C'est un logiciel open source (licence MIT) et fonctionne bien sur Linux et Windows.

Le site Web de XMLStarlet le décrit comme suit.

XMLStarlet est un ensemble d'utilitaires de ligne de commande (outils) qui peuvent être utilisés pour transformer, rechercher, valider et éditer des documents et des fichiers XML en utilisant un ensemble simple de commandes shell, de la même façon que pour les fichiers texte simples utilisant UNIX grep, sed, Awk, diff, patch, join, etc.

Le paquet Debian / Ubuntu s'appelle xmlstarlet . Mais attention: contrairement à ce que dit la page de xmlstarlet , le binaire s'appelle xmlstarlet dans Debian / Ubuntu et non xml .

Il existe également des binaires Windows sur SourceForge.

Pour une jolie petite introduction, consultez IBM Démarrer en collaboration avec XMLStarlet .

La syntaxe XPath dans différentes langues est la meilleure pour trouver des choses en xml. En fait, l' un des outils recommandés par les fabricants de xgrep est essentiellement un analyseur Perl XML qui accepte l'entrée XPath.

Un outil qui fonctionne sous Linux est xml_grep . Il comprend parfaitement XML et n'est pas un outil ligne par ligne.

Xml_grep est inclus comme outil autonome dans le package XML :: Twig . La fonctionnalité d'écorchage est assez puissante car elle prend en charge les spécifications XPath .

Exemple de ligne de commande (extraire des messages édités après le milieu de février à partir du triage Data Dump ):

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

L'installation est simple. Non plus

  • sudo cpan -i "XML::Twig" , comme décrit dans le livre de recettes xml_grep référencé ci-dessous.

ou


Plus d'information:

La meilleure introduction que j'ai trouvée pour xml_grep est xml_grep cookbook , environ deux pages. Autre:

  • Man page pour xml_grep .
  • Real home page pour XML :: Twig.

XMLSpy est un outil incroyable, si un peu dépensé.

Je vous conseillerais de ne pas utiliser un outil grep-like sur XML, mais utiliser une bibliothèque pour analyser XML à la place.
De quoi avez-vous besoin pour cela? Tout langage de programmation? Je pense que l'analyseur XML intégré .NET serait adapté au travail facilement si vous êtes prêt à écrire un programme pour cela.

Mise à jour : pour Linux, une bibliothèque d'analyse XML connue est libxml2 .