Сценарий:
Я использую машину 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