wiener
написал 26 июня 2005 года в 20:51 (790 просмотров)
Ведет себя
как мужчина; открыл 30 тем в форуме, оставил 76 комментариев на сайте.
Доброго вресени суток.
Вторую неделю пытаюсь разобраться с сабжем…читал man, Google, книгу купил, но толку ноль…., а надо совсем ничего…помогите плз.
Есть XML:
<server type=«APS» address=«elinora.u-l.ru» status=«UP»></server>
elinora.u-l.ru
Elinora Aliens vs. Predator 2 — http://Elinora.U-L.Ru/ [D]
avp2
<map>dm_compound</map>
2
16
6
0
Esterbi
0
64
0
FanLenD
0
43
0
Надо получить:
status из раздела server
hostname
name
map
numplayers
maxplayers
и массив name из раздела players
Заранее благодарен.
Последние комментарии
-
OlegL, 17 декабря 2023 года в 15:00 →
Перекличка
21
-
REDkiy, 8 июня 2023 года в 9:09 →
Как «замокать» файл для юниттеста в Python?
2
-
fhunter, 29 ноября 2022 года в 2:09 →
Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
6
-
Иванн, 9 апреля 2022 года в 8:31 →
Ассоциация РАСПО провела первое учредительное собрание
1
-
Kiri11.ADV1, 7 марта 2021 года в 12:01 →
Логи catalina.out в TomCat 9 в формате JSON
1
DevOps as a Service from Palark
24/7 SRE & DevOps service to cover all your Kubernetes needs.

Что читал?
Что и как пробовал делать? Что не получилось?
да как два пальца ;)
$xml=~/<server>(.*?)<\/server>/s; $f{server}=$2;<\/p><p>$f{status}=(split /=/,(grep /^status=/,split /\s+/,$1)[0])[1];<\/p><p>map{$f{server}=~/<$_>(.*?)<\/$_>/s; $f{$_}=$1} qw(hostname name map numplayers maxplayers players);<\/p><p>@names=map{$_=~/<name>(.*?)<\/name>/; $1}grep /<name>/,split /\n/,$f{players};<\/pre><\/div><\/p><p>в переменной $xml - твой конфиг<\/p><p>в массиве $f - нужные параметры (ну и плюс пара лишних, server и players)<\/p><p>в @names - как и просил, имена игроков.<\/p></server>Читал статьи с OpenNet, man XML::Parser, XML::Simple + книга «Использование XML в Perl»
Конструкция описанная в XML::Simple ($xml->(variable)) не работает…говорит, что нет такого вызова…
От XML::Parser вообще ничего не удалось получить…
эммм. можно, конечно же.
но может это в качестве д/з по perl-у сойдёт? ;)
впрочем, переменные можно назвать как они есть, по содержанию (типа так уж и быть, на первый раз расскажу):
$xml=~/<server>(.*?)<\/server>/s; $server=$2;<\/p><p>$status=(split /=/,(grep /^status=/,split /\s+/,$1)[0])[1];<\/p><p>map{$server=~/<$_>(.*?)<\/$_>/s; $$_=$1} qw(hostname name map numplayers maxplayers players);<\/p><p>@names=map{$_=~/<name>(.*?)<\/name>/; $1}grep /<name>/,split /\n/,$players;<\/pre><\/div><\/p><p>ps: правда, тут неявно есть одна засада: если тег <name> для имени сервера окажется <u>после<\/u> <players>, то тут будет один глюк ;)<\/p></server>2 Genie: не работает… ругается на переменные и ссылки…
Люди !!! Дайте РАБОЧИЙ код с использованием XML !!! PLZ !!!
чего?!
какую такую ошибку?
2 Genie:
#!/usr/bin/perl -w
use strict;
…будет что посмотреть…
…а как затащить содержимое файла в переменную ?! Я всё время затаскивал только в массив, а тут он не работает…
@lines = <>; $lines = join("",@lines);можно и так:
правда, если надо отдельного конкретного файла, а не указанных в командной строке и/или STDIN, то сперва открывать надо:
оно, конечно, есть, на что поглядеть..
только с use strict я пока что сам не в ладах ;)