Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML::Simple со вложенными тэгами, ? 
:(
    Опции темы
Poison
Дата 21.6.2007, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 2.2.2007

Репутация: нет
Всего: нет



Разобрался как работает XML::Simple с файлами с простой структурой, таких как:
<?xml version='1.0'?>
<employees>
    <employee>
        <name>John Doe</name>
        <age>43</age>
        <sex>M</sex>
        <department>Operations</department>
    </employee>
    <employee>
        <name>Jane Doe</name>
        <age>31</age>
        <sex>F</sex>
        <department>Accounts</department>
    </employee>
    <employee>
        <name>Be Goode</name>
        <age>32</age>
        <sex>M</sex>
        <department>Human Resources</department>
    </employee>
</employees>


А что делать если есть ещё и вложенные тэги, как до них добраться?
PM MAIL   Вверх
arto
Дата 21.6.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



посмотреть структуру через Data::Dumper?
PM MAIL ICQ   Вверх
Poison
Дата 21.6.2007, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 2.2.2007

Репутация: нет
Всего: нет



arto, мне сами значения надо выцепить
PM MAIL   Вверх
arto
Дата 21.6.2007, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



# perl -MXML::Simple -MData::Dumper -le 'print Dumper XMLin ($ARGV[0])' =(cat)
<?xml version='1.0'?>
<employees>
    <employee>
        <name>John Doe</name>
        <age>43</age>
        <sex>M</sex>
        <department>Operations</department>
    </employee>
    <employee>
        <name>Jane Doe</name>
        <age>31</age>
        <sex>F</sex>
        <department>Accounts</department>
    </employee>
    <employee>
        <name>Be Goode</name>
        <age>32</age>
        <sex>M</sex>
        <department>Human Resources</department>
    </employee>
</employees>
^D
$VAR1 = {
          'employee' => {
                        'Be Goode' => {
                                      'department' => 'Human Resources',
                                      'age' => '32',
                                      'sex' => 'M'
                                    },
                        'John Doe' => {
                                      'department' => 'Operations',
                                      'age' => '43',
                                      'sex' => 'M'
                                    },
                        'Jane Doe' => {
                                      'department' => 'Accounts',
                                      'age' => '31',
                                      'sex' => 'F'
                                    }
                      }
        };

# 

и смотрите путь в хеше до значений.
PM MAIL ICQ   Вверх
Poison
Дата 21.6.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 2.2.2007

Репутация: нет
Всего: нет



arto, с этим то я разобрался
а как например добраться до массы вот здесь
Код

<?xml version="1.0"?>
<camelids>
    <species name="Camelus dromedarius">
        <common-name>Dromedary, or Arabian Camel</common-name>
               <physical-characteristics>
         <mass>300 to 690 kg.</mass>
    </physical-characteristics>
        <conservation status="no special status">
                    </conservation>
    </species>
    ...
</camelids>


можно код написать, если не сложно

PM MAIL   Вверх
arto
Дата 21.6.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



$VAR1 = {
          'content' => '
    ...
',
          'species' => {
                       'conservation' => {
                                         'status' => 'no special status'
                                       },
                       'common-name' => 'Dromedary, or Arabian Camel',
                       'name' => 'Camelus dromedarius',
                       'physical-characteristics' => {
                                                     'mass' => '300 to 690 kg.'
                                                   }
                     }
        };

следовательно,

$VAR1->{'species'}->{'physical-characteristics'}->{'mass'}
PM MAIL ICQ   Вверх
Poison
Дата 21.6.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 2.2.2007

Репутация: нет
Всего: нет



arto, ну я так и делаю, а он ничего не выдаёт
PM MAIL   Вверх
arto
Дата 21.6.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



у мну работает:

# perl -MXML::Simple -MData::Dumper -le '$a = XMLin ($ARGV[0]); print $a->{"species"}->{"physical-characteristics"}->{"mass"};' =(cat)
<?xml version="1.0"?>
<camelids>
    <species name="Camelus dromedarius">
        <common-name>Dromedary, or Arabian Camel</common-name>
               <physical-characteristics>
         <mass>300 to 690 kg.</mass>
    </physical-characteristics>
        <conservation status="no special status">
                    </conservation>
    </species>
    ...
</camelids>
^D
300 to 690 kg.
#
PM MAIL ICQ   Вверх
Poison
Дата 21.6.2007, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 2.2.2007

Репутация: нет
Всего: нет



arto,  smile получилось, спасибо огромное
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4121 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.