Автор Тема: Perl + Xml  (Прочитано 7206 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн NoT

  • Коллежский секретарь
  • ***
  • Сообщений: 79
  • Репутация: 0
  • Пол: Мужской
Perl + Xml
« : јРав 30, 2009, 09:34:40 am »
Доброго времени суток Господа!
Вопрос в следующем: есть xml файл, желаю разобрать его посредству модуля Simple. И все бы ничего но вот если идет просто перечисление тегов, то есть <cpus>
 <cpu_statistics>
  <total-free>2</total-free>
  <shared-free>0</shared-free>
  <shared-reserved>0</shared-reserved>
  <total-number>5</total-number>
  <total-own>5</total-own>
  <total-shared>0</total-shared>
  <own-free>2</own-free>
  <blocked-count>3</blocked-count>
  <own-blocked>3</own-blocked>
  <shared-blocked>0</shared-blocked>
  <total-busy>0</total-busy>
  <own-busy>0</own-busy>
  <shared-busy>0</shared-busy>
 </cpu_statistics>
к примеру то все хорошо получается.  А если встречается  нечто похожее на это <node nodename="localhost">
   <cpu id="1" type="own" own="1" blocked="0">
    <blocked>0</blocked>
   </cpu>
   <cpu id="2" type="own" own="1" blocked="0">
    <blocked>0</blocked>
   </cpu>
 </node>
 <node nodename="localtest1">
   <cpu id="1" type="own" own="1" blocked="1">
    <blocked>1<block_reason>Not connected yet</block_reason></blocked>
   </cpu>
 </node>
то все стопориться.
Внимание вопрос: как мне получить доступ(наверное не правильно выразился), ко второму элементу, то есть получить от сюда <node nodename="localtest1"> значение localtest1.
#!/usr/bin/perl -w


use CGI::Carp qw(fatalsToBrowser);
use XML::Simple;
use Data::Dumper;



#------------------------------------------------
my $filexml = XMLin("/tmp/cleo-xml-status.main");


$tmp = $filexml->{cpus}->{node}->{nodename};
если в xml файле элемент один, то все работает, а если два то нет:(

Оффлайн NoT

  • Коллежский секретарь
  • ***
  • Сообщений: 79
  • Репутация: 0
  • Пол: Мужской
Re: Perl + Xml
« Ответ #1 : јРав 30, 2009, 12:21:15 pm »
а все спасибо разобрался:) может кому то пригодится. Решил так
$filexml->{cpus}->{node}->[2]->{"nodename"};
тоесть как в массиве обращаемся в ячейку памяти