Forum Webscript.Ru

Программирование => Perl => Тема начата: Eva от 03 Сентября 2004, 16:32:32

Название: помогите найти ошибку
Отправлено: Eva от 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 от 03 Сентября 2004, 17:56:26
1. У меня этот модуль не собрался. Даже при установке libxml2-2.6.13.
2. Что значит "ощущение, что он не до конца сформирован."?
Название: помогите найти ошибку
Отправлено: Eva от 03 Сентября 2004, 18:02:47
Для проверки пишу:
print &CGI::header();
print $xmlpage->toString();
Выводится не до конца сформированный xml. Текст просто обрывается в произвольном месте, как будто что-то прервало вывод xml в поток.
Название: помогите найти ошибку
Отправлено: NeoNox от 03 Сентября 2004, 18:35:16
ошибки в еррор_логе есть?
пробовали выводить также @errors?
почему бы вам не посмотреть в сторону XML::Simple?
Название: помогите найти ошибку
Отправлено: Phoinix от 04 Сентября 2004, 10:21:31
Eva

При

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

Результат:












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

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

NeoNox

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

У меня кстати тоже, только под виндами захотел работать...
Название: помогите найти ошибку
Отправлено: Eva от 05 Сентября 2004, 19:55:57
Проблема решилась принудительной конвертацией массива @errors в utf. И ведь знала же, что DOM требует utf, знала... :(

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