Grep-Tool für XML [geschlossen]


22

Ich bin auf der Suche nach einem guten Tool, um grep-ähnliche Operationen mit XML auszuführen - zum Beispiel, um nur bestimmte Attribute zu extrahieren.

Grep selbst kann es nicht verarbeiten - jedes DFA-äquivalente Tool kann nur nicht rekursive Übereinstimmungen verarbeiten, und meines ist möglicherweise rekursiv.

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

Irgendwelche Empfehlungen?

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

Antworten:


21

XMLStarlet (Wikipedia) ist ein Kommandozeilen-Tool, das sich dem annähert grep. Es ist Open-Source-Software (MIT-Lizenz) und funktioniert gut unter Linux und Windows.

Die XMLStarlet-Website beschreibt dies wie folgt.

XMLStarlet ist eine Reihe von Befehlszeilen-Dienstprogrammen (Tools), mit denen XML-Dokumente und -Dateien mit einfachen Shell-Befehlen transformiert, abgefragt, validiert und bearbeitet werden können. awk, diff, patch, join, etc Befehle.

Das Debian / Ubuntu-Paket heißt xmlstarlet. Aber Vorsicht: Entgegen dem, was in der Manpage steht, heißt die Binärdatei xmlstarletin Debian / Ubuntu und nicht xml.

Es gibt auch Windows-Binärdateien auf SourceForge.

Eine nette kleine Einführung finden Sie in IBM Start working with XMLStarlet .


Entfernen Sie den abschließenden Schrägstrich vom ersten Link.
Bkkbrad

Ich kann es nicht zum Laufen bringen ... Es passt nie auf einen xpath außer '/' (das gesamte Dokument), was ziemlich wertlos ist :(
Hendy Irawan

@HendyIrawan - Sind Sie sicher, dass Sie nicht versuchen, xpath zu verwenden? (Wie Ihre XML hat einen Standard-Namespace, den Sie nicht berücksichtigen?)
Daniel Haley

Ich habe versucht, es zu klonen, aber es scheint, dass das Repository kaputt ist.
Hola Soy Edu Feliz Navidad

5

Die XPath- Syntax in verschiedenen Sprachen eignet sich am besten, um Dinge in XML zu finden. Tatsächlich ist eines der von den Herstellern von xgrep empfohlenen Tools im Grunde ein Perl-XML-Parser, der XPath-Eingaben akzeptiert.


5

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

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

Beispielbefehlszeile (Extrahieren von Posts, die nach Mitte Februar bearbeitet wurden, aus dem Triology Data 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 unten angegebenen xml_grep-Kochbuch beschrieben.

oder


Mehr Informationen:

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


Ich habe einen fehlerhaften Link behoben, aber der Triology Data Dump-Link ist ebenfalls fehlerhaft. Ich werde sehen, was ich tun kann.
Peter Mortensen


0

Ich würde raten, kein grep-ähnliches Tool für XML zu verwenden, sondern stattdessen eine Bibliothek zum Parsen von XML zu verwenden.
Wofür genau brauchst du es? Beliebige Programmiersprache? Ich denke, der in .NET integrierte XML-Parser würde leicht zum Job passen, wenn Sie bereit sind, ein Programm dafür zu schreiben.

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.