Автор Тема: помогите найти ошибку  (Прочитано 3077 раз)

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

Оффлайн Eva

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
помогите найти ошибку
« : 03 Сентября 2004, 16:32:32 »
Код скрипта:

use XML::LibXML;
my $parser=XML::LibXML->new();

my $xmlpage=$parser->parse_string("");
my $root=$xmlpage->getDocumentElement();

my @errors=();
# здесь идёт заполнение массива @errors

if (scalar(@errors)>0)
{
  my $elist=$xmlpage->createElement("Errors");
  foreach my $erdescr (@errors)
  {
    my $error=$xmlpage->createElement("Error");
    $error->setAttributeNode($xmlpage->createAttribute("Descr",$erdescr));
    $elist->appendChild($error);
  }
  $root->appendChild($elist);
}

Что не так в этом коде?
У меня почему-то в результате $xmlpage выглядит как невалидный xml, точнее даже создаётся такое ощущение, что он не до конца сформирован.

Очень рассчитываю на вашу помощь.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
помогите найти ошибку
« Ответ #1 : 03 Сентября 2004, 17:56:26 »
1. У меня этот модуль не собрался. Даже при установке libxml2-2.6.13.
2. Что значит "ощущение, что он не до конца сформирован."?
The documentations is your friend

Оффлайн Eva

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
помогите найти ошибку
« Ответ #2 : 03 Сентября 2004, 18:02:47 »
Для проверки пишу:
print &CGI::header();
print $xmlpage->toString();
Выводится не до конца сформированный xml. Текст просто обрывается в произвольном месте, как будто что-то прервало вывод xml в поток.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
помогите найти ошибку
« Ответ #3 : 03 Сентября 2004, 18:35:16 »
ошибки в еррор_логе есть?
пробовали выводить также @errors?
почему бы вам не посмотреть в сторону XML::Simple?
The documentations is your friend

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
помогите найти ошибку
« Ответ #4 : 04 Сентября 2004, 10:21:31 »
Eva

При

my @errors=(\'1\',\'2\',\'3\',\'4\',\'5\');

Результат:












То бишь обрабатывается до конца:

Ошибка не в коде, а скорей всего:
- Один из элементов массива @erros имеет запретные символы, посмотри если скрипт тормозится в одном и том же месте, проверить этот элемент, впрочем, логи помогут...
- Может таймаут срабатывает, если обработка довольно длительная (в зависимости от того как скрипт запускается)...

NeoNox

Цитировать
У меня этот модуль не собрался. Даже при установке libxml2-2.6.13.

У меня кстати тоже, только под виндами захотел работать...

Оффлайн Eva

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
помогите найти ошибку
« Ответ #5 : 05 Сентября 2004, 19:55:57 »
Проблема решилась принудительной конвертацией массива @errors в utf. И ведь знала же, что DOM требует utf, знала... :(

Всем спасибо за помощь.

 

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