Outil Grep pour XML [fermé]

22

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 les correspondances non récursives, et le mien peut être récursif.

J'ai essayé xgrep , mais il 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.

Adam Matan
la source

Réponses:

21

XMLStarlet (Wikipedia) est un outil en ligne de commande qui s'en rapproche grep. Il s'agit d'un logiciel open source (licence MIT) qui fonctionne bien sous Linux et Windows.

Le site Web XMLStarlet le décrit comme suit.

XMLStarlet est un ensemble d'utilitaires (outils) de ligne de commande qui peuvent être utilisés pour transformer, interroger, valider et modifier des documents et des fichiers XML à l'aide d'un ensemble simple de commandes shell de la même manière que pour les fichiers en texte brut utilisant UNIX grep, sed, commandes awk, diff, patch, join, etc.

Le paquet Debian / Ubuntu est nommé xmlstarlet. Mais attention: contrairement à ce que dit la page de manuel, le binaire est nommé xmlstarletdans Debian / Ubuntu et non xml.

Il existe également des binaires Windows sur SourceForge.

Pour une jolie petite introduction, voir IBM's Start working with XMLStarlet .

Ludwig Weinzierl
la source
Supprimez la barre oblique de fin du premier lien.
Bkkbrad
Je ne peux pas le faire fonctionner ... Il ne correspond jamais sur aucun xpath à l'exception de '/' (tout le document), ce qui est assez inutile :(
Hendy Irawan
@HendyIrawan - Êtes-vous sûr que ce n'est pas comme ça que vous essayez d'utiliser xpath? (Comme si votre XML a un espace de noms par défaut dont vous ne tenez pas compte?)
Daniel Haley
J'ai essayé de le cloner, mais il semble que le référentiel soit cassé.
Hola Soy Edu Feliz Navidad
5

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 XML Perl qui accepte les entrées XPath.

jweede
la source
5

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 en tant qu'outil autonome dans le package XML :: Twig . La fonctionnalité de réception est assez puissante car elle prend en charge les spécifications XPath .

Exemple de ligne de commande (extraire les articles modifiés après la mi-février du triology 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 le livre de recettes xml_grep , environ deux pages. Autre:

Peter Mortensen
la source
J'ai corrigé un lien cassé, mais le lien de vidage de données de triologie est également cassé. Je vais voir ce que je peux faire.
Peter Mortensen
0

XMLSpy est un outil incroyable, même s'il est un peu coûteux.

JP Alioto
la source
0

Je conseillerais de NE PAS utiliser un outil de type grep sur XML, mais d'utiliser une bibliothèque pour analyser XML à la place.
Pour quoi en avez-vous besoin exactement? Tout langage de programmation? Je pense que l'analyseur XML intégré .NET conviendrait facilement si vous êtes prêt à écrire un programme pour cela.

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

fretje
la source