Каков самый дешевый кроссплатформенный подход для анализа XML с использованием ksh? - PullRequest
1 голос
/ 15 сентября 2008

Необходимо проанализировать некоторый базовый XML (один корневой элемент, 3-4 подэлемента, 1-3 атрибута каждый) из сценария ksh (в идеале придерживаться ksh, если сценарий уже существует, и он просто пытается прочитать созданную дополнительную конфигурацию в XML другой программой).

Я знаю, что могу использовать sed и выполнять сопоставление с образцом, но это небезопасно, учитывая, что входной XML может измениться, а атрибуты могут быть продублированы на различных подэлементах (или новых подэлементах).

Пока что я думаю об использовании XSLT против XML для извлечения нескольких атрибутов (для определенных элементов), которые скрипт ksh рассматривает как отдельные поля. Я могу использовать Oracle для этого, учитывая, что мы являемся продуктом, управляемым БД, и Oracle всегда будет установлен в наших системах, но это кажется довольно сложным делом.

Любой другой безопасный подход для извлечения определенных атрибутов из входного XML кросс-платформенным способом, который не требует доступа к стороннему анализатору / преобразователю?

Ответы [ 4 ]

1 голос
/ 11 октября 2008

Возможно, вы захотите взглянуть на эту реализацию чистого bash , если важно сохранить все это в сценарии оболочки.

Тем не менее, другие языки сценариев, такие как Python и Perl, также очень переносимы и значительно облегчат вашу жизнь. Например, модуль Perl XML :: Twig поставляется со скриптом конечного пользователя под названием "xml_grep", которому уже может быть передана опция --text_only для извлечения только текста узла, найденного из комплекса. поиск. Не должно быть намного сложнее изменить его, чтобы он также возвращал указанный атрибут.

1 голос
/ 14 октября 2008

В зависимости от вашего значения "синтаксического анализа" XMLStarlet может быть хорошим вариантом. Он полностью управляется из командной строки и поддерживает выбор и редактирование файлов XML, а также XSLT.

0 голосов
/ 07 декабря 2009

Скорее, используйте CSV для разбора, это не только упростит логику, но и легко конвертирует xls в csv

0 голосов
/ 15 сентября 2008

Не можете сделать это полностью в ksh, но попробуйте Python XML?

Если вы хотите легкий, вы можете попробовать libxml2 и небольшую программу на Си.

...