Strumento Grep per XML [chiuso]


22

Sto cercando un buon strumento per eseguire operazioni simili a grep su XML - ad esempio, estrarre solo alcuni attributi.

Grep di per sé non può gestirlo - qualsiasi strumento equivalente a DFA può gestire solo corrispondenze non ricorsive e la mia può essere ricorsiva.

Ho provato xgrep , ma è abbastanza instabile e voglio uno strumento stabile e affidabile.

Qualche consiglio?

EDIT: preferisco strumenti open source che funzionano bene sotto Linux.

Risposte:


21

XMLStarlet (Wikipedia) è uno strumento da riga di comando che si avvicina grep. È un software open source (licenza MIT) e funziona bene su Linux e Windows.

Il sito Web XMLStarlet lo descrive come segue.

XMLStarlet è un insieme di utilità (strumenti) da riga di comando che possono essere utilizzate per trasformare, interrogare, convalidare e modificare documenti e file XML utilizzando un semplice insieme di comandi shell in modo simile a quanto avviene per i file di testo in chiaro utilizzando UNIX grep, sed, comandi awk, diff, patch, join, ecc.

Il pacchetto Debian / Ubuntu è chiamato xmlstarlet. Ma attenzione: contrariamente a quanto dice la manpage, il binario è chiamato xmlstarletin Debian / Ubuntu e non xml.

Ci sono anche file binari di Windows su SourceForge.

Per una piccola introduzione, vedi IBM Inizia a lavorare con XMLStarlet .


Rimuovere la barra finale dal primo collegamento.
Bkkbrad,

Non riesco a farlo funzionare ... Non corrisponde mai a nessun xpath tranne '/' (l'intero documento), il che è abbastanza inutile :(
Hendy Irawan,

@HendyIrawan - Sei sicuro che non sia come stai cercando di usare xpath? (Come se il tuo XML avesse uno spazio dei nomi predefinito di cui non stai tenendo conto?)
Daniel Haley,

Ho provato a clonarlo, ma sembra che il repository sia rotto.
Hola Soy Edu Feliz Navidad

5

La sintassi XPath in varie lingue è la cosa migliore per trovare cose in XML. In effetti uno degli strumenti raccomandati dai creatori di xgrep è fondamentalmente un parser XML Perl che accetta input XPath.


5

Uno strumento che funziona sotto Linux è xml_grep . Comprende pienamente XML e non è uno strumento riga per riga.

xml_grep è incluso come strumento autonomo nel pacchetto XML :: Twig . La funzionalità grepping è piuttosto potente in quanto supporta le specifiche XPath .

Riga di comando di esempio (estrazione dei post modificati dopo la metà di febbraio dal dump dei dati della triologia ):

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

L'installazione è semplice. O

  • sudo cpan -i "XML::Twig", come descritto nel ricettario xml_grep indicato di seguito.

o


Maggiori informazioni:

La migliore introduzione che ho trovato per xml_grep è il ricettario xml_grep , di circa due pagine. Altro:


Ho corretto un collegamento interrotto, ma anche il collegamento Dump dei dati della triologia è interrotto. Vedrò cosa posso fare.
Peter Mortensen,


0

Vorrei consigliare di NON utilizzare uno strumento simile a grep su XML, ma di utilizzare una libreria per analizzare l'XML invece.
Di cosa hai bisogno esattamente? Qualche linguaggio di programmazione? Penso che il parser XML incorporato .NET si adatterà facilmente al lavoro se sei disposto a scrivere un programma per esso.

Aggiornamento : per Linux, una libreria di parser XML ben nota è libxml2 .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.