[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