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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Perl + XML 
:(
    Опции темы
AlexanderI
Дата 26.7.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Где посмореть примеры разбора XML ?

Как можно разобрать такую структуру, учитывая что записей несколько сотен ?
Очень хочется посмотреть на примеры.

<?xml version="1.0"?>
<newsL>
 <news date="1.1.2002">
 <title>title 1</title>
 <text>news text 1</text>
 </news>
</newsL>

<socLine>
 <soc dates="1.1.2002">
 <title>title 1</title>
 <text>news text 1</text>
 </socLine>

<socLine>
 <soc dates="1.1.2002">
 <title>title 1</title>
 <text>news text 1</text>
 </socLine>
 
--------------------
Магазин детских игрушек  | Авто ВАЗ
PM MAIL   Вверх
nitr
Дата 26.7.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



поиск на форуме! Или за тебя скрипт писать? Я понимаю если сложный вопрос... обсуждали XML мнооого раз... 


--------------------
PM   Вверх
AlexanderI
Дата 26.7.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Поиск по форому ничего вразумительного не дал. Обсуждались наипростейшие формы. 
--------------------
Магазин детских игрушек  | Авто ВАЗ
PM MAIL   Вверх
Nab
Дата 26.7.2006, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да куда уж проще...

тем более что как по мне, так и XML не очень валидный... <soc dates ... > должно быть каким либо способом закрыто....

правда там указана версия 1.0, а я по стандартам особенно и не знаю как оно там было раньше... 


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
rcdimon
Дата 26.7.2006, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

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



XML::Parser или что-то в этом духе 
PM MAIL ICQ   Вверх
nitr
Дата 26.7.2006, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



все примеры в комплекте с модулем, как установить модуль мы уже писали + в ФАКе тож сказано, но имхо perl -MCPAN -e 'install XML::Parser' лучше ;) 


--------------------
PM   Вверх
korob2001
Дата 28.7.2006, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Модуль XML::Simple, входит в стандартный дистрибутив Perl. Но сразу хочу подправить твой XML, в нём есть несколько ошибок:
Код

<?xml version="1.0"?>
<myxml>
   <newsL>
      <news date="1.1.2002">
      <title>title 1</title>
      <text>news text 1</text>
      </news>
   </newsL>

   <socLine>
      <soc dates="1.1.2002"/>
      <title>title 1</title>
      <text>news text 1</text>
   </socLine>

   <socLine>
      <soc dates="1.1.2002"/>
      <title>title 1</title>
      <text>news text 1</text>
   </socLine>
</myxml>

1.  Добавил корневой тэг <myxml></myxml>. Корневой тэг должен быть всегда, он своего рода оболочка, для всего остального, что в него входит.
2.  У тебя есть тэг <soc dates="1.1.2002"> их кстати несколько, но у них нет закрывающего тэга, т.е. они одиночные. Любой одиночный тэг должен заканчиваться такими символами />, т.е. <soc dates="1.1.2002"/> - это указывает на то, что тэг одиночный, он же открывающий - он же закрывающий.

Теперь напиши или скопируй такой код:
Код

#!/usr/bin/perl
use strict;
use Data::Dumper;
use XML::Simple;

my $xml_file = "C:/file.xml";

my $xml = XMLin($xml_file);

print Dumper($xml);

Испаравь путь к своему XML файлу и запусти его. Увидешь примерно такую структуру:
Код

$VAR1 = {
          'socLine' => [
                       {
                         'text' => 'news text 1',
                         'soc' => {
                                  'dates' => '1.1.2002'
                                },
                         'title' => 'title 1'
                       },
                       {
                         'text' => 'news text 1',
                         'soc' => {
                                  'dates' => '1.1.2002'
                                },
                         'title' => 'title 1'
                       }
                     ],
          'newsL' => {
                     'news' => {
                               'text' => 'news text 1',
                               'date' => '1.1.2002',
                               'title' => 'title 1'
                             }
                   }
        };

Это тебе показал её метод (подпрограмма) Dumper из модуля Data::Dumper. Как ты понял, она(структура) расположена в переменной $xml. Всё остальное уже дело техники. Если тебе известно, что из себя представляют анонимные хеши, анонимные массивы и прочее, думаю ты знаешь, что с этим делать дальше.
Т.е. примерно таким образом можно получить текст:
Код

print $xml->{socLine}[0]{text} . "\n";
 

Это сообщение отредактировал(а) korob2001 - 28.7.2006, 09:43


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
AlexanderI
Дата 28.7.2006, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



korob2001, Круто ! 
--------------------
Магазин детских игрушек  | Авто ВАЗ
PM MAIL   Вверх
Celdox
Дата 1.8.2006, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Причем не впервой. Даже так держать говорить не надо.  smile 

 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.0941 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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