Работа с пространствами имен в XML

| Нет комментариев

Пространства имен в XML — это своего рода параллельное измерение. Есть вложенность тегов, есть атрибуты, а есть пространства имен, которые могут перенести фрагмент XML в другое пространство и даже сделать его таким образом невидимым для парсеров:

<date timestamp="200911032358">
    <invisible:service name="rating"/>
</date>

При работе с таким XML через XML::LibXML важно не забывать, что для того, чтобы добраться до узла с пространством имен, отличной от той, что используется во всем документе, требуется создать контекст, а затем уже с его помощью выбирать нужные узлы:

my $context = new XML::LibXML::XPathContext;
$context->registerNs('yablogs', 'urn:yandex-blogs');

my @codeNodes = $context->findnodes("yablogs:$nodeName/text()", $node);

Код использован в бою на сервисе рейтинга русских блогов.

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 03.11.2009 22:55. Автор — ash.

Предыдущая запись — «Мой проект», часть 2

Следующая запись — Saint Perl в Санкт-Петербурге

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.