Grep tool per XML

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

Grep stesso non è in grado di gestirlo – qualsiasi strumento equivalente a DFA può gestire solo partite non ricorsive e la mia può essere ricorsiva.

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

Qualche raccomandazione?

EDIT: Preferisco gli strumenti open source che funzionano bene sotto Linux.

XMLStarlet (Wikipedia) è uno strumento di row di command che si avvicina a grep . È software open source (licenza MIT) e funziona bene su Linux e Windows.

Il sito Web di XMLStarlet lo descrive come segue.

XMLStarlet è un insieme di utilità di row di command (tools) che possono essere utilizzati per trasformare, interrogare, validationre e modificare documenti XML e file utilizzando semplici set di comandi di shell in modo simile per i file di text normale utilizzando UNIX grep, sed, awk, diff, patch, join, comandi ecc.

Il pacchetto Debian / Ubuntu è denominato xmlstarlet . Ma attenzione: Contrariamente a quanto dice la manpage, il binario viene chiamato xmlstarlet in Debian / Ubuntu e non xml .

Ci sono anche binari di Windows su SourceForge.

Per una bella introduzione, vedere IBM Start working with XMLStarlet .

La syntax XPath in varie lingue è la cosa migliore per trovare le cose in xml. Infatti uno degli strumenti consigliati dai creatori di xgrep è fondamentalmente un parser XML Perl che accetta l'input XPath.

Uno strumento che funziona sotto Linux è xml_grep . Capisce completamente XML e non è uno strumento di row per row.

xml_grep è incluso come uno strumento autonomo nel pacchetto XML :: Twig . La funzionalità di cattura è piuttosto potente in quanto support le specifiche di XPath .

Esempio di row di command (estrazione di post modificati dopo la metà di febbraio dal triplice Data Dump ):

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

L'installazione è facile. O

  • sudo cpan -i "XML::Twig" , come descritto nel cookbook xml_grep di cui sotto.

o


Maggiori informazioni:

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

  • Man pagina per xml_grep .
  • Real home page per XML :: Twig.

XMLSpy è uno strumento incredibile, se un po 'speso.

Vorrei consigliare di non utilizzare uno strumento grep come XML, ma utilizzare una libreria per analizzare XML in luogo.
Per cosa ti serve esattamente? Qualsiasi linguaggio di programmazione? Penso che il parser XML integrato XML possa adattarsi facilmente al lavoro se si è disposti a scrivere un programma per esso.

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