[Moscow.pm] xml parsing

Alexander Q qalex на ashmanov.com
Пн Июл 6 01:17:17 PDT 2009


В Пнд, 06/07/2009 в 12:09 +0400, Павел Тимонин пишет:
> не разобрался. видимо, на спане не вся документация. вот я открыл
> файл, со стайлом Tree, например. что у меня теперь на этой переменной?
> дальше-то что делать?:)

my @path;
my $xml = XML::Parser->new(
 Handlers => {
  Start => sub {
   shift;
   my $name = shift;
   push @path, $name;
   my %attrs = @_;
   warn "Path: ", join("/", @path), "\n";
   warn "Attributes:\n";
   warn "$_\t=> $attrs{$_}\n" for sort keys %attrs;
   warn " --\n\n";
  },
  End   => sub { pop @path },
 }
);
$xml->parse($xml_string);


Вот такой вот простой туториал, можно сказать. Так эту штуку использую
я. Путь лучше отслеживать как-нибудь по-другому, так - не быстро.

> 6 июля 2009 г. 11:38 пользователь Alexander Q <qalex на ashmanov.com>
> написал:
>         В Пнд, 06/07/2009 в 11:28 +0400, Павел Тимонин пишет:
>         > а есть ли легальный способ получить все параметры текущего
>         тега?
>         > ну и, заодно, все имена его детей. или вообще способ
>         получить всех
>         > детей.
>         
>         
>         XML::Parser - событийный парсер. С хорошей документацией :)
>         
>         Задать ему пачку callback'ов (начало/конец ноды часто
>         хватает), и
>         фперёд. Коллбэки вызываются с мильоном параметров: expat, node
>         name,
>         attr1 => value1, attr2 => value2, ...
>         
>         Пишут, что на больших документах он наиболее быстр.
>         
>         
>         > 30 июня 2009 г. 15:07 пользователь Павел Тимонин
>         <gg.error на gmail.com>
>         > написал:
>         >         так, вроде понял. а описание структуры, какие где
>         >         дети/аттрибуты надо получить руками из этого xsd?
>         >
>         >         30 июня 2009 г. 15:04 пользователь Denis Evdokimov
>         >         <evdokimov.denis на gmail.com> написал:
>         >
>         >                         как работать с xml? что это вообще
>         такое? я
>         >                         даже не нашёл, где прочитать. то
>         есть в
>         >                         xml::libxml я не продвинулся дальше,
>         чем
>         >                         открыл файл парсером. что с ним
>         делать дальше
>         >                         и как вытащить данные? у меня есть
>         ещё файл
>         >                         описания .xsd, он вроде как очень
>         нужен, но я
>         >                         опять же не понимаю, зачем.
>         >
>         >
>         >                 К примеру так:
>         >                 my $doc    =
>         >                 XML::LibXML->new->parse_file($cities_file);
>         >                 my $cities =
>         $doc->getElementsByTagName('city');
>         >
>         >                 while ( my $city = $cities->shift() )
>         >                 {
>         >                     my $id         =
>         $city->getAttribute('id');
>         >                     my $name = $city->getAttribute('name');
>         >                     print "$id $name\n";
>         >                 }
>         >
>         >                 P.S. Как я и говорил, с документацией
>         некоторые
>         >                 проблемы ;-)
>         >
>         >
>         >                 --
>         >                 Moscow.pm mailing list
>         >                 moscow-pm на pm.org | http://moscow.pm.org
>         >
>         >
>         >
>         >
>         >
>         > --
>         > Moscow.pm mailing list
>         > moscow-pm на pm.org | http://moscow.pm.org
>         
>         --
>         Alexander Q <qalex на ashmanov.com>
>         
>         
>         
>         --
>         Moscow.pm mailing list
>         moscow-pm на pm.org | http://moscow.pm.org
>         
> 
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
-- 
Alexander Q <qalex на ashmanov.com>



Подробная информация о списке рассылки Moscow-pm