Назад | Перейти на главную страницу

Самый простой способ запросить файлы XML?

Сценарий:

Я использую машину AIX - на самом деле, их больше дюжины. У меня есть приложение, которое выводит информацию в файлы XML, к сожалению, без разрывов строк. Мне нужно запускать сценарии, которые могут запрашивать эти файлы. В основном это просто: если бы это были обычные файлы журнала, мне бы подошли команды grep и cut. Однако я застрял с тем, что у меня есть.

Я очень мало работал с XML, а это производственные машины AIX, поэтому я не могу установить случайное программное обеспечение, чтобы проверить, работает ли что-то. Perl находится на этих машинах, и поиск через @INC для XML показывает мне (в сокращении):

XML/LibXML
XML/Parser
XML/Simple
XML/SAX

Правильно ли использовать один из них, чтобы делать то, что мне нужно?

Я рекомендую XML :: Simple. Очень легко подобрать и уже установлен.

Расширяя большой ответ Марис (т?), XML :: Simple определенно мой лучший друг. Это очень просто и хорошо работает со статическими XML-файлами.

XML :: Simple НЕ подходит для потока XML или огромных (здесь мы говорим о множестве мегабайт) файлов XML, но для файлов конфигурации и файлов ресурсов XML :: Simple прекрасно работает.

Я избавлю вас от подробностей, потому что моя ссылка (на mclean.net.nz) должна быть отличным учебником по использованию, а ссылка maris (t?) На CPAN будет отличной, чтобы действительно познакомить вас с деталями. . Как подстроить его под свое поведение и что все, что вы можете с этим сделать.

Два быстрых совета, которые я всегда вижу для новых пользователей;
При создании экземпляра обработчика добавьте параметр KeyAttr => 0. Я не понимаю, кто в здравом уме хочет, чтобы это началось. В будущем, когда вы это поймете? Конечно, вы воспользуетесь им. До тех пор? Бесполезный.

В любом случае, второй совет:
ForceArray - ваш лучший друг, когда узел может иметь 0, 1 или много записей. Избавляет вас от неприятных обходных путей, таких как проверка размера узла XML и два разных действия с ним или его полный пропуск. Поместите этот ключ в ForceArray, используйте цикл for / foreach, назовите его выполненным.

Возможно, проверьте некоторые ответы здесь: https://stackoverflow.com/questions/91791/grep-and-sed-equivalent-for-xml-command-line-processing