| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > XML::Simple со вложенными тэгами |
| Автор: Poison 21.6.2007, 09:46 |
| Разобрался как работает 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> А что делать если есть ещё и вложенные тэги, как до них добраться? |
| Автор: arto 21.6.2007, 09:52 |
| посмотреть структуру через Data::Dumper? |
| Автор: Poison 21.6.2007, 10:02 |
| arto, мне сами значения надо выцепить |
| Автор: arto 21.6.2007, 10:09 |
| # 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' } } }; # и смотрите путь в хеше до значений. |
| Автор: Poison 21.6.2007, 10:20 | ||
| arto, с этим то я разобрался а как например добраться до массы вот здесь
можно код написать, если не сложно |
| Автор: arto 21.6.2007, 11:58 |
| $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'} |
| Автор: Poison 21.6.2007, 12:59 |
| arto, ну я так и делаю, а он ничего не выдаёт |
| Автор: arto 21.6.2007, 14:22 |
| у мну работает: # 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. # |
| Автор: Poison 21.6.2007, 14:47 |
| arto, |