XML için Grep aracı [kapalı]


22

XML'de grep benzeri işlemler gerçekleştirmek için iyi bir araç arıyorum - örneğin, yalnızca belirli öznitelikleri çıkarın.

Grep kendisi bunu kaldıramaz - herhangi bir DFA'ya eşdeğer araç yalnızca özyinelemeli olmayan eşleşmeleri kaldırabilir ve benimki özyinelemeli olabilir.

Xgrep'i denedim , ancak oldukça dengesiz ve kararlı ve güvenilir bir araç istiyorum.

Herhangi bir tavsiye?

EDIT: Linux altında çalışan açık kaynaklı araçları tercih ederim.

Yanıtlar:


21

XMLStarlet (Wikipedia) yaklaşan bir komut satırı aracıdır grep. Açık kaynaklı yazılımdır (MIT lisansı) ve Linux ve Windows'ta iyi çalışıyor.

XMLStarlet web sitesi aşağıdaki gibi açıklanmaktadır.

XMLStarlet, basit bir kabuk komut kümesi kullanarak XML belgelerini ve dosyalarını dönüştürmek, sorgulamak, doğrulamak ve düzenlemek için kullanılabilecek bir komut satırı yardımcı programıdır (araçlar), UNIX grep, sed, awk, diff, patch, join vb komutları.

Debian / Ubuntu paketi adlandırılmıştır xmlstarlet. Ancak dikkat: Manpage'in söylediğinin tersine, ikili xmlstarletDebian / Ubuntu olarak adlandırılır ve adlandırılmaz xml.

SourceForge'da Windows ikili dosyaları da var.

Güzel bir giriş için bkz. IBM'in XMLStarlet ile çalışmaya başlama .


İlk bağlantıdaki sondaki eğik çizgiyi kaldırın.
Bkkbrad

Çalışamıyorum ... Asla değersiz olan '/' (tüm belge) dışında hiçbir xpath ile eşleşmiyor :(
Hendy Irawan

@HendyIrawan - xpath kullanmaya çalıştığınızdan emin değil misiniz? (XML'inizde hesaba katmadığınız varsayılan bir ad alanı var mı?)
Daniel Haley

Klonlamaya çalıştım, ancak depo bozuldu.
Hola Soy Edu Feliz Navidad,

5

XPath çeşitli dillerde sözdizimi xml şeyler bulmak için en iyisidir. Aslında araçlardan biri xgrep yapımcıları tarafından tavsiye temelde XPath girişini kabul eden bir Perl XML ayrıştırıcı olduğunu.


5

Linux altında çalışan bir araç xml_grep'dir . XML'i tamamen anlar ve satır satır bir araç değildir.

xml_grep , XML :: Twig paketinde bağımsız bir araç olarak bulunur . Grepping işlevi, XPath özelliklerini desteklediği için oldukça güçlüdür .

Örnek komut satırı (Şubat ayının ortasından sonra trioy Veri Dökümü'nden düzenlenmiş mesajları ayıklamak ):

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

Kurulumu kolaydır. ya

  • sudo cpan -i "XML::Twig", aşağıda referans verilen xml_grep yemek kitabında açıklandığı gibi.

veya


Daha fazla bilgi:

Xml_grep için bulduğum en iyi tanıtım , iki sayfadan oluşan xml_grep yemek kitabı . Diğer:


Kırık bir bağlantıyı düzelttim, ancak üçlü veri dökümü bağlantısı da koptu. Ne yapabileceğime bakacağım.
Peter Mortensen,


0

XML'de grep benzeri bir araç kullanmamalarını tavsiye ederim, ancak XML'i yerine ayrıştırmak için bir kütüphane kullanın.
Tam olarak ne için ihtiyacınız var? Herhangi bir programlama dili var mı? Bunun için bir program yazmaya istekli iseniz, .NET'in yerleşik XML ayrıştırıcısının işe kolayca uyacağını düşünüyorum.

Güncelleme : Linux için iyi bilinen bir XML ayrıştırıcı kütüphanesi libxml2'dir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.