Narzędzie Grep dla XML [zamknięte]

22

Szukam dobrego narzędzia do wykonywania podobnych do grep operacji na XML - na przykład wyodrębnienia tylko niektórych atrybutów.

Grep nie może sobie z tym poradzić - każde narzędzie równoważne DFA może obsługiwać tylko nierekurencyjne dopasowania, a moje może być rekurencyjne.

próbowałem xgrep , ale jest dość niestabilny i chcę stabilnego i niezawodnego narzędzia.

Jakieś zalecenia?

EDIT: Preferuję narzędzia open source, które działają dobrze pod Linuksem.

Adam Matan
źródło

Odpowiedzi:

21

XMLStarlet (Wikipedia) to narzędzie wiersza poleceń, które jest blisko grep. Jest to oprogramowanie open source (licencja MIT) i działa dobrze na systemach Linux i Windows.

Witryna XMLStarlet opisuje to w następujący sposób.

XMLStarlet to zestaw linii poleceń   narzędzia (narzędzia), które można wykorzystać   przekształcać, sprawdzać, weryfikować i edytować   Dokumenty i pliki XML przy użyciu prostych   zestaw poleceń powłoki w podobny sposób   odbywa się dla zwykłych plików tekstowych   UNIX grep, sed, awk, diff, patch,   komendy join, etc.

Nazwa pakietu Debian / Ubuntu xmlstarlet. Ale strzeż się: W przeciwieństwie do tego, co mówi strona podręczna, nazwa binarna ma nazwę xmlstarlet w Debianie / Ubuntu, a nie xml.

Istnieją także pliki binarne Windows na SourceForge.

Aby zapoznać się z ładnym wprowadzeniem, zobacz IBM Zacznij pracować z XMLStarlet .

Ludwig Weinzierl
źródło
Usuń końcowy ukośnik z pierwszego linku.
Bkkbrad
Nie mogę go uruchomić ... Nigdy nie pasuje do żadnego xpath z wyjątkiem „/” (cały dokument), co jest dość bezwartościowe :(
Hendy Irawan
@HendyIrawan - Czy jesteś pewien, że nie próbujesz użyć xpath? (Jak twój XML ma domyślną przestrzeń nazw, której nie liczysz?)
Daniel Haley
Próbowałem go sklonować, ale wygląda na to, że repozytorium jest uszkodzone.
Hola Soy Edu Feliz Navidad
5

The XPath składnia w różnych językach jest najlepsza do znalezienia rzeczy w xml. w rzeczywistości jedno z narzędzi Zalecane przez twórców xgrep to w zasadzie parser XML Perla, który akceptuje dane wejściowe XPath.

jweede
źródło
5

Narzędziem działającym pod Linuksem jest xml_grep . W pełni rozumie XML i nie jest narzędziem liniowym.

xml_grep jest zawarty jako samodzielny narzędzie w XML :: Twig pakiet. Funkcjonalność grepping jest dość potężna, ponieważ obsługuje XPath specyfikacje.

Przykładowy wiersz polecenia (wyodrębnianie postów edytowanych po połowie lutego z trylogia Zrzut danych ):

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

Instalacja jest łatwa. Zarówno

  • sudo cpan -i "XML::Twig", jak opisano w podręczniku kucharskim xml_grep, o którym mowa poniżej.

lub


Więcej informacji:

Najlepsze wprowadzenie, dla którego znalazłem xml_grep jest książka kucharska xml_grep , około dwóch stron. Inny:

Peter Mortensen
źródło
Naprawiłem przerwany link, ale link zrzutu danych trylogii jest również uszkodzony. Zobaczę co mogę zrobić.
Peter Mortensen
0

XMLSpy to niesamowite narzędzie, choć trochę drogie.

JP Alioto
źródło
0

Radziłbym NIE używać narzędzia podobnego do grep w XML, ale zamiast tego używać biblioteki do analizowania XML.
Do czego dokładnie tego potrzebujesz? Dowolny język programowania? Myślę, że wbudowany parser XML .NET pasuje do zadania, jeśli chcesz napisać do niego program.

Aktualizacja : dla Linuksa dobrze znaną biblioteką parsera XML jest libxml2 .

fretje
źródło