2008-09-15 3 views
1

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

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

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

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

ответ

0

Не удается сделать это полностью в ksh, но попробуйте python xml?

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

1

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

Кроме того, другие языки сценариев, такие как Python и Perl, также очень портативны и облегчат вашу жизнь. Например, модуль Perl поставляется с скриптом конечного пользователя под названием «xml_grep», который уже может быть передан с параметром --text_only, чтобы извлечь только текст узла, найденного из сложного поиска. Не так уж сложно изменить его, чтобы вернуть указанный атрибут.

1

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

0

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

Смежные вопросы