Alat Grep untuk XML [ditutup]

22

Saya mencari alat yang bagus untuk melakukan operasi mirip grep di XML - misalnya, ekstrak hanya atribut tertentu.

Grep itu sendiri tidak dapat mengatasinya - alat DFA-setara apa pun hanya dapat menangani kecocokan non rekursif, dan milik saya mungkin bersifat rekursif.

Saya sudah mencoba xgrep , tetapi sangat tidak stabil, dan saya ingin alat yang stabil dan dapat diandalkan.

Ada rekomendasi?

EDIT: Saya lebih suka alat open source yang bekerja dengan baik di Linux.

Adam Matan
sumber

Jawaban:

21

XMLStarlet (Wikipedia) adalah alat baris perintah yang mendekati grep. Ini adalah perangkat lunak sumber terbuka (lisensi MIT) dan berfungsi dengan baik di Linux dan Windows.

Situs web XMLStarlet menggambarkannya sebagai berikut.

XMLStarlet adalah seperangkat utilitas baris perintah (alat) yang dapat digunakan untuk mengubah, meminta, memvalidasi, dan mengedit dokumen dan file XML menggunakan set sederhana perintah shell dengan cara yang sama dilakukan untuk file teks biasa menggunakan UNIX grep, sed, perintah awk, diff, patch, join, dll.

Paket Debian / Ubuntu bernama xmlstarlet. Namun berhati-hatilah: Berlawanan dengan apa yang dikatakan halaman manual, binernya dinamai xmlstarletdalam Debian / Ubuntu dan tidak xml.

Ada juga binari Windows di SourceForge.

Untuk pengantar kecil yang menyenangkan, lihat Mulai IBM bekerja dengan XMLStarlet .

Ludwig Weinzierl
sumber
Hapus garis miring dari tautan pertama.
Bkkbrad
Saya tidak bisa membuatnya berfungsi ... Tidak pernah cocok dengan xpath apa pun kecuali '/' (seluruh dokumen), yang cukup berharga :(
Hendy Irawan
@HendyIrawan - Apakah Anda yakin itu bukan cara Anda mencoba menggunakan xpath? (Seperti XML Anda memiliki namespace default yang tidak Anda pertanggungjawabkan?)
Daniel Haley
Saya mencoba mengkloningnya, tetapi sepertinya repositori rusak.
Hola Soy Edu Feliz Navidad
5

The XPath sintaks dalam berbagai bahasa yang terbaik untuk menemukan hal-hal di xml. Bahkan salah satu alat yang direkomendasikan oleh pembuat xgrep pada dasarnya adalah parser XML Perl yang menerima input XPath.

jweede
sumber
5

Alat yang bekerja di Linux adalah xml_grep . Ini sepenuhnya memahami XML dan bukan alat baris demi baris.

xml_grep disertakan sebagai alat yang berdiri sendiri dalam paket XML :: Twig . Fungsionalitas grepping cukup kuat karena mendukung spesifikasi XPath .

Contoh baris perintah (mengekstraksi tulisan yang diedit setelah pertengahan Februari dari Dump Data triologi ):

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

Instalasi mudah. Antara

  • sudo cpan -i "XML::Twig", seperti yang dijelaskan dalam buku masak xml_grep yang dirujuk di bawah ini.

atau


Informasi lebih lanjut:

Pengantar terbaik yang saya temukan untuk xml_grep adalah buku masak xml_grep , sekitar dua halaman. Lain:

Peter Mortensen
sumber
Saya telah memperbaiki tautan yang rusak, tetapi tautan Dump Data triologi juga rusak. Aku akan lihat apa yang bisa aku lakukan.
Peter Mortensen
0

XMLSpy adalah alat yang luar biasa, jika sedikit boros.

JP Alioto
sumber
0

Saya menyarankan TIDAK untuk menggunakan alat seperti grep pada XML, tetapi gunakan perpustakaan untuk mengurai XML sebagai gantinya.
Untuk apa sebenarnya Anda membutuhkannya? Ada bahasa pemrograman? Saya pikir parser XML. NET built-in akan cocok dengan pekerjaan dengan mudah jika Anda bersedia untuk menulis sebuah program untuk itu.

Pembaruan : untuk Linux, parser XML library yang terkenal adalah libxml2 .

fretje
sumber