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


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


'type' => 'staff.

'password' => 'password',

fullname' => 'Bob Fate'.

id' => '24-9057

}:

Saccount = {

login' => 'we'idyf',

type' => 'fatuity',

password => p35Sv,Gn3

 'fullname' => 'Wendy Fate',

'id' => '50-9057'

}:

Если мы захотим использовать это в нашей системе учетных записей, нам, вероятно, понадобится вызвать некую функцию, например ateAccount(\%recorcl), а не выводить запись при помощи Data: : Djrr.per.

Теперь, когда мы познакомились с процедурами инициализации и обработчиками из XML: :Parser, нам нужно добавить код, чтобы действительно начать анализ:

# обрабатывает записи для нескольких учетных записей из

# одного XML-файла очереди

open(FILE, Saddqueue) or die "Unable to open $addq'jeue:$' \n":

# спасибо Джеффу Пиньяну за это мудрое сокращение

read(FILE, $queuecontents, -s FILE);

$p->parse("<queue>".Squeuecontents."</queue>");

Этот фрагмент кода, вероятно, заставил вас приподнять бровь, а то и обе. В первых двух строчках мы открываем файл очереди и считываем его содержимое в скалярную переменную Squeuecontents. Третья строка могла бы показаться понятной, если бы не забавный аргумент, переданный функции parse(). Почему мы считываем содержимое файла очереди и заключаем его в теги XML вместо того, чтобы перейти к его анализу?

А потому, что это хак. И надо сказать - не плохой. И вот почему эти «фокусы» необходимы для анализа нескольких элементов <account> в одном файле очереди.

Каждый XML-документ по определению должен иметь корневой элемент (root element).

Этот элемент служит контейнером для всего документа; все остальные элементы являются его подэлементами. XML-анализатор ожидает, что первый встреченный им тег будет открывающим тегом корневого элемента документа, а последний тег - закрывающим тегом этого элемента. XML-документы, не соответствующие этой структуре, не считаются корректными (well-formed).

Попытка смоделировать очередь в XML заставит нас призадуматься. Если ничего не сделать, то первым тегом, найденным в файле, будет <account>. Все будет работать нормально до тех пор, пока анализатор не встретит закрывающий тег </account> для этой записи. В этот момент анализатор завершит свою работу, даже если в очереди есть другие записи, потому что он посчитает, что дошел до конца документа.




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