Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > XML::Simple


Автор: rcdimon 1.11.2008, 17:59
Всем привет. В структуре XML документа есть кусок

Код

<title><hlword priority="strict">RSSonline</hlword>.<hlword priority="strict">ru</hlword> - Центр RSS технологий</title>


Я хочу получить из этого простую строку
RSSonline.ru - Центр RSS технологий

Но XML::Simple выдает мне структуру, по которой восстановить строку уже невозможно

Код

->{title}
   ->{content}
      ->[0]                  .
      ->[1]                  - Центр RSS технологий
   ->{hlword}
      ->[0]
         ->{content}     RSSonline
         ->{priority}      strict
      ->[1]
         ->{content}     ru
         ->{priority}      strict


Как быть?

Автор: Itsys 2.11.2008, 10:52
Чтож поделаешь, какая структура, такой и ответ smile

Попробуй использовать GroupTags (GroupTags => {title => 'hlword'}
Или вычистить регуляркой теги <hlword></hlword> перед использованием парсера

Автор: sir_nuf_nuf 3.11.2008, 16:47
rcdimon, по чистой случайности .. у XML::LibXML - есть как раз такой способ выводить содержимое элементов.
Код

use XML::LibXML;
my $p = XML::LibXML->new();
my $doc = $p->parse_string('<title><hlword priority="strict">RSSonline</hlword>.<hlword priority="strict">ru</hlword> - Центр RSS технологий</title>');
my $root = $doc->documentElement();
print $root->textContent();

Код

RSSonline.ru - Центр RSS технологий

но я думаю, у вас просто кривая структура XML

Автор: rcdimon 6.11.2008, 19:21
Цитата

но я думаю, у вас просто кривая структура XML


Это не у меня ) Это у Яндекс.XML  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)