Forum Webscript.Ru
Программирование => Perl => Тема начата: 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, точнее даже создаётся такое ощущение, что он не до конца сформирован.
Очень рассчитываю на вашу помощь.
-
1. У меня этот модуль не собрался. Даже при установке libxml2-2.6.13.
2. Что значит "ощущение, что он не до конца сформирован."?
-
Для проверки пишу:
print &CGI::header();
print $xmlpage->toString();
Выводится не до конца сформированный xml. Текст просто обрывается в произвольном месте, как будто что-то прервало вывод xml в поток.
-
ошибки в еррор_логе есть?
пробовали выводить также @errors?
почему бы вам не посмотреть в сторону XML::Simple?
-
Eva
При
my @errors=(\'1\',\'2\',\'3\',\'4\',\'5\');
Результат:
То бишь обрабатывается до конца:
Ошибка не в коде, а скорей всего:
- Один из элементов массива @erros имеет запретные символы, посмотри если скрипт тормозится в одном и том же месте, проверить этот элемент, впрочем, логи помогут...
- Может таймаут срабатывает, если обработка довольно длительная (в зависимости от того как скрипт запускается)...
NeoNox
У меня этот модуль не собрался. Даже при установке libxml2-2.6.13.
У меня кстати тоже, только под виндами захотел работать...
-
Проблема решилась принудительной конвертацией массива @errors в utf. И ведь знала же, что DOM требует utf, знала... :(
Всем спасибо за помощь.