Інструмент Grep для XML [закрито]


22

Я шукаю хороший інструмент для виконання грепоподібних операцій на XML - наприклад, вилучення лише певних атрибутів.

Grep сам не може впоратися з цим - будь-який інструмент, еквівалентний DFA, може обробляти лише нерекурсивні збіги, а мій може бути рекурсивним.

Я спробував xgrep , але він досить нестабільний, і я хочу стабільний і надійний інструмент.

Будь-які рекомендації?

EDIT: Я віддаю перевагу інструментам з відкритим кодом, які добре працюють під Linux.

Відповіді:


21

XMLStarlet (Wikipedia) - це інструмент командного рядка, який наближається до grep. Це програмне забезпечення з відкритим кодом (ліцензія MIT) і добре працює в Linux та Windows.

Веб-сайт XMLStarlet описує його наступним чином.

XMLStarlet - це набір утиліт (інструментів) командного рядка, які можна використовувати для перетворення, запиту, перевірки та редагування XML-документів і файлів за допомогою простого набору команд оболонки аналогічним чином, як це робиться для файлів із звичайним текстом за допомогою UNIX grep, sed, команд awk, diff, виправлення, приєднання тощо.

Пакет Debian / Ubuntu названий xmlstarlet. Але будьте обережні: На відміну від того, що написано на сторінці, двійковий файл називається xmlstarletв Debian / Ubuntu, а не xml.

Також у SourceForge є двійкові файли Windows.

Для приємного невеликого ознайомлення див. Початок роботи IBM з XMLStarlet .


Видаліть прорізну косу рису з першого посилання.
Bkkbrad

Я не можу змусити його працювати ... Він ніколи не відповідає жодному xpath, окрім '/' (весь документ), що є абсолютно нікчемним :(
Hendy Irawan

@HendyIrawan - Ви впевнені, що не так, як ви намагаєтесь використовувати xpath? (Як і у вашому XML є простір імен за замовчуванням, який ви не враховуєте?)
Даніель Хейлі

Я намагався його клонувати, але, схоже, сховище зламано.
Hola Soy Edu Feliz Navidad

5

XPath синтаксис на різних мовах найкраще для пошуку речей в XML. Насправді одним із інструментів, рекомендованих виробниками xgrep, в основному є Perser XML-аналізатор, який приймає вхід XPath.


5

Інструмент, який працює під Linux, - xml_grep . Він повністю розуміє XML і не є інструментом по рядку.

xml_grep включений як окремий інструмент у пакет XML :: Twig . Функція прихватування досить потужна, оскільки підтримує специфікації XPath .

Зразок командного рядка (витяг дописів, відредагованих після середини лютого з дамбу даних триології ):

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

Установка проста. Або

  • sudo cpan -i "XML::Twig", як описано в xml_grep кулінарній книзі, на яку посилається нижче.

або


Більше інформації:

Найкращий вступ, який я знайшов для xml_grep, - це кулінарна книга xml_grep , приблизно дві сторінки. Інший:


Я виправив ламану ланку, але посилання триології Data Dump також порушено. Я побачу, що я можу зробити.
Пітер Мортенсен


0

Я б радив НЕ використовувати грепоподібний інструмент для XML, а використовувати бібліотеку для розбору XML замість нього.
Для чого саме це потрібно? Будь-яка мова програмування? Я думаю, що вбудований XML-аналізатор .NET підходить для роботи легко, якщо ви хочете написати програму для цього.

Оновлення : для Linux добре відомою бібліотекою парсерів XML є libxml2 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.