Тегам xml не ставятся в соответствие теги html

Freetz

Guest
Тегам xml не ставятся в соответствие теги html

Я пишу систему добавления и вывода новостей на основе xml на PHP4 с использование Expat. Вопрос в следующем:
Есть код:
$this->open_tag=array(
"news" => "<table width='75%' border='0' cellspacing='0' cellpadding='0'><tr>",
"header" => "<td>",
"pic" => "<td><table width='100%' border='0' cellspacing='0' cellpadding='0'><tr><td width='21%'>",
"text" => "<td width=79%>",
"date" => "<tr><td>");
То же самое есть для закрывающих тегов.

А потом непосредственно работа xml:

$this->xml_parser = xml_parser_creat();
xml_set_object($this->xml_parser, &$this);
xml_parser_option($this->xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_set_element_handler($this->xml_parser, "startElement", "endElement");
xml_set_character_data_handler($this->xml_parser, "characterData");
$fp = fopen($this->xml_file, "r");
$data=fread($fp, 4096);
xml_parse($this->xml_parser, $data);

Обработчики тегов(startElement и endelement) работают
след.образом:

function startElement($parser, $name, $attrs)
{
if ($format == $this->open_tag[$name])
{
$this->html.=$format;
}
}

А теперь вопрос: почему у меня не формируется HTML-код, описанный в массивах открывающих и закрывающих тегов xml? Вместо этого, данные заключенные в теги xml выводятся в чистом виде, без какого либо html! Заранее спасибо за ответ.
 

slach

Новичок
echo $name
сделай в startElement

посмотри в каком виде тебе имя тега приходит

xml_parser_option($this->xml_parser, XML_OPTION_CASE_FOLDING, true); - преобразует все теги к большим буквам ?? или к маленьким ?

-~{}~ 27.06.04 17:58:

$format у тебя не определен

сделай
сделай проще
if (isset($this->open_tag[$name])) {
$format= $this->open_tag[$name];

}
 

Freetz

Guest
Посмотрел. В итоге $name в startelement передается как слитная последовательность всех открывающих тегов, т.е. newsheaderpicdate. Подскажите, плиз, почему такое может быть и как это исправить?
 

slach

Новичок
явная ошибка в коде, парсер тут непричем

этот самый $name у тебя в global не объявлен ? случайно?
 
Сверху