Автор Тема: Чтение XML - популярная альтернатива XML::DOM/Parser?  (Прочитано 9526 раз)

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

Оффлайн flamey

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Хочу считывать курсы валют с сайта нашего ЦБ и с сайта нац банка одной центрально-европейской страны.

Оказалось что у XML::Parser\'а нет файла конфигурации для работы с кодировкой CP1251, и каждый скрипт он тормозит с ошибкой что нет такого файла. С CP1250 всё работает. Нужного файла нет на CPAN\'е, есть он на сайте одного нашего соотечественника, но хостинг у меня буржуйский, и они отказываются мне его поставить.

смена хостинга на данный момент не рассматривается, сервер "упал" один раз за пол года которые я с ними, такого у меня ещё не было.

вопросы,
- можно ли как-то как-нибудь обойти эту проблему, напр. указать парсеру не смотрель на кодировку, или XML::DOM для меня потерян?
- какая есть популярная альтернатива (популярная, потому что надеюсь уже у хостинга будет установлена и не надо будет им опять что-то доказывать) этим модулям, чтобы попроще в обращении?

заранее спасибо!

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Чтение XML - популярная альтернатива XML::DOM/Parser?
« Ответ #1 : 24 Ноября 2006, 21:17:08 »
Цитировать
flamey:
Оказалось что у XML::Parser\'а нет файла конфигурации для работы с кодировкой CP1251, и каждый скрипт он тормозит с ошибкой что нет такого файла. С CP1250 всё работает. Нужного файла нет на CPAN\'е, есть он на сайте одного нашего соотечественника, но хостинг у меня буржуйский, и они отказываются мне его поставить.


че-то ты намешал по моему... причем тут XML::Parser и \'нет такого файла\' и кодировка? Ты пытаешься файлы называть по русски что ли а потом сувать их в парсер?
 в исканиях.

Оффлайн flamey

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Чтение XML - популярная альтернатива XML::DOM/Parser?
« Ответ #2 : 25 Ноября 2006, 03:57:37 »
Пример:


# __TEST.XML_________________________________



036
AUD
1
Австралийский доллар
16,0102






# __TEST.PL_________________________________
#!/usr/bin/perl
use warnings;

use XML::Parser;

my $CBRfile = "test.xml";
my $CBRparser = new XML::Parser();

my $CBRlist = $CBRparser->parsefile($CBRfile);


до того как я добавил windows-1251.enc (который я нашёл в инете) в C:\\Perl\\site\\lib\\XML\\Parser\\Encodings, результат вышеприведённого примера был:


Couldn\'t open encmap windows-1251.enc:
No such file or directory
 at C:/Perl/site/lib/XML/Parser.pm line 187


а всё из-за этого:
"Expat has built-in encodings for: UTF-8, ISO-8859-1, UTF-16, and US-ASCII. ... For encodings other than the built-ins, expat calls the function load_encoding in the Expat package with the encoding name. This function looks for a file in the path list @XML::Parser::Expat::Encoding_Path, that matches the lower-cased name with a \'.enc\' extension. The first one it finds, it loads." (из док-ции XML::Parser)

как только добавил я этот файл всё заработало.

хостинг провайдер отказывается добавить этот файл.

вообще-то я щас буду пробовать одну идею, но всё равно интересно есть ли альтернатива которая не является wrapper\'ом XML::Parser-а.

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Чтение XML - популярная альтернатива XML::DOM/Parser?
« Ответ #3 : 25 Ноября 2006, 17:13:43 »
понятно. Как варианты:

1. перегнать xml в utf-8

use Text::Iconv;
 $converter = Text::Iconv->new("windows-1251", "utf-8");
 $xml_in_utf = $converter->convert("содержимое твоего xml");
только надо будет в заголовке xml сменить encoding="windows-1251" на encoding="utf-8"

2. вырезать все русские символы. И тогда можно тоже смело сменить  encoding="windows-1251"
 в исканиях.

Оффлайн flamey

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Чтение XML - популярная альтернатива XML::DOM/Parser?
« Ответ #4 : 25 Ноября 2006, 19:54:02 »
спасибо за советы!

в др. форуме тоже посоветовали поменять кодировку. я так и сделал, всё работает. я не знал что XML::DOM может работать со строками, везде примеры только с URL\'ами. наверно надо начинать с документации, а не с примеров :)

а Text::Iconv на сервере тоже не стоит :(

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28