Grep-Tool für XML

17574
Adam Matan

Ich suche nach einem guten Werkzeug, um grep-ähnliche Vorgänge in XML auszuführen - z. B. nur bestimmte Attribute zu extrahieren.

Grep selbst kann nicht damit umgehen - jedes DFA-äquivalente Werkzeug kann nur nicht rekursive Übereinstimmungen verarbeiten, und meine kann rekursiv sein.

Ich habe xgrep ausprobiert, aber es ist ziemlich instabil und ich möchte ein stabiles und zuverlässiges Werkzeug.

Irgendwelche Empfehlungen?

EDIT: Ich bevorzuge Open Source-Tools, die unter Linux gut funktionieren.

22

5 Antworten auf die Frage

21
Ludwig Weinzierl

XMLStarlet (Wikipedia) ist ein Befehlszeilentool, das dem sehr nahe kommt grep. Es ist Open Source-Software (MIT-Lizenz) und funktioniert gut unter Linux und Windows.

Die XMLStarlet-Website beschreibt es wie folgt.

XMLStarlet ist eine Reihe von Befehlszeilen-Dienstprogrammen (Tools), mit denen XML-Dokumente und -Dateien mit einfachen Shell-Befehlen in ähnlicher Weise umgewandelt, abgefragt, validiert und bearbeitet werden können. Dies ist für Klartextdateien mit UNIX grep, sed, Befehle für awk, diff, patch, join usw.

Das Debian / Ubuntu-Paket wird benannt xmlstarlet. Aber Achtung: Entgegen dem, was die Manpage sagt, wird die Binärdatei xmlstarletin Debian / Ubuntu benannt und nicht xml.

Es gibt auch Windows-Binärdateien auf SourceForge.

Eine kleine Einführung finden Sie in IBMs Erste Schritte mit XMLStarlet .

Entfernen Sie den abschließenden Schrägstrich vom ersten Link. Bkkbrad vor 15 Jahren 0
Ich kann es nicht zum Laufen bringen ... Es passt nie auf einen Xpath außer '/' (das ganze Dokument), was ziemlich wertlos ist :( Hendy Irawan vor 12 Jahren 0
@HendyIrawan - Sind Sie sicher, dass Sie nicht versuchen, xpath zu verwenden? (Wie Ihr XML einen Standardnamensraum hat, den Sie nicht berücksichtigen?) Daniel Haley vor 12 Jahren 0
Ich habe versucht, es zu klonen, aber das Repository scheint kaputt zu sein. Hola Soy Edu Feliz Navidad vor 6 Jahren 0
5
jweede

Die XPath- Syntax in verschiedenen Sprachen eignet sich am besten zum Auffinden von Dingen in XML. Tatsächlich ist eines der von xgrep empfohlenen Tools im Grunde ein Perl-XML-Parser, der XPath-Eingaben akzeptiert.

5
Peter Mortensen

Ein Werkzeug, das unter Linux funktioniert, ist xml_grep . Es versteht vollständig XML und ist kein zeilenweise Werkzeug.

xml_grep ist als eigenständiges Tool im Paket XML :: Twig enthalten. Die Grepping-Funktion ist recht leistungsfähig, da sie XPath- Spezifikationen unterstützt .

Beispiel für eine Befehlszeile (nach Mitte Februar bearbeitete Posts aus dem Triologie-Daten-Dump ):

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

Die Installation ist einfach. Entweder

  • sudo cpan -i "XML::Twig", wie im xml_grep-Kochbuch beschrieben, auf das unten verwiesen wird.

oder


Mehr Informationen:

Die beste Einführung, die ich für xml_grep gefunden habe, ist das xml_grep-Kochbuch, ungefähr zwei Seiten. Andere:

Ich habe einen defekten Link behoben, aber der Triologie-Data-Dump-Link ist ebenfalls defekt. Ich werde sehen, was ich tun kann. Peter Mortensen vor 7 Jahren 0
0
fretje

Ich würde raten, NICHT ein grep-ähnliches Tool für XML zu verwenden, sondern eine Bibliothek verwenden, um stattdessen XML zu parsen.
Wofür brauchen Sie es genau? Irgendeine Programmiersprache? Ich denke, dass der in .NET integrierte XML-Parser leicht zu dem Job passt, wenn Sie bereit sind, dafür ein Programm zu schreiben.

Update : Für Linux ist libxml2 eine bekannte XML- Parserbibliothek .

0
JP Alioto

XMLSpy ist ein tolles Tool, wenn auch etwas teuer.