Perl для системного администрирования


Создание системы учетных записей для работы с пользователями - часть 13


В результате получаем (отступы сделаны для удобства чтения):

<queue> <account name="bobf" type="staff"

password="password" status="to_be_created"

fullname="Bob Fate" id="24-9C57" />

<account nanie="wendyf" type="faculty"

password="password"

status="to_be_created"

fullname="Wendy Fate" id="50-9057" />

</queue>

Мы получили отличный XML-код, но его формат несколько отличается от формата наших файлов с данными. Данные о каждой учетной записи представлены в виде атрибутов одного элемента <account> </ accojnt>, a не в виде вложенных элементов. В XML: :Simple есть несколько правил, руководствуясь которыми, он преобразовывает структуры данных. Два из них можно сформулировать так (а остальные можно найти в документации): «отдельные значения преобразуются в XML-атрибуты», а «ссылки на анонимные массивы преобразуются во вложенные XML-элементы».

Чтобы получить «верный» XML-документ («верный» означает «в том же стиле и того же формата, что и наши файлы данных»).

Кошмар, не правда ли? Но у нас есть варианты для выбора. Мы можем:

  1. Изменить формат наших файлов данных. Это похоже на крайнюю меру.
  2. Изменить способ, которым XML: :Simple анализирует наш файл. Чтобы получить такую структуру данных (рис. 3.6), мы могли бы использовать функцию XMLin() несколько иначе:


    Squeue = XMLin("<queue>",Squeuecontents."</queue>",

    forcearray=>1, keyattr => [""]):


    Но если мы перекроим способ чтения данных, чтобы упростить запись, то потеряем семантику кэшей, упрощающих поиск и обработку данных.

  3.  Выполнить некую обработку данных после чтения, но до записи. Мы могли бы прочитать данные в нужную нам структуру (так же, как делали это раньше), применить эти данные в нужном месте, а затем преобразовать структуру данных в один из вариантов, получаемых модулем XML: : Simple, перед тем как записать ее.



  4. - Начало -  - Назад -  - Вперед -



    Книжный магазин