Как в SAX Обработать пустой тег

Alexandre

PHPПенсионер
Как в SAX Обработать пустой тег

Классический пример:
есть XML текст
<item>
<name>HS-961</name>
<price>100</price>
<descr>Компьютер </descr>
</item>
....
При этом поле данных <descr> может быть пустым....

есть текст функций SAX анализатора
PHP:
function startElement($parser, $name, $attrs) {   //  функция обработки открывающего тега
    global $nname, $opentag;
    $opentag=true;
    $nname=$name;  }

function endElement($parser, $name) {        //  функция обработки закрывающего тега
    global $opentag;
    $opentag=false; }

function CharacterData($parser, $data ) {     //  функция обработки данных 
    global $nname, $Names, $HRef, $Price, $Desc, $Type, $opentag;

 if ($nname == "NAME" and $opentag ) { $Names[] = $data;};
 if ($nname == "DESCR" and $opentag) {  $Desc[] 	= $data;};
     if ($nname == "PRICE" and $opentag) { $Price[]	= $data;};
}

$Datastr = /// ввод данных из файла .....
$xml_parser = xml_parser_create();                                    //   создание обработчика событий
xml_set_element_handler($xml_parser, "startElement", "endElement");   //   установка  функций обработки
xml_set_character_data_handler($xml_parser, "CharacterData" );        //   начального, конечного тега и данных



	if (!xml_parse($xml_parser, $Datastr )) {        //   начало разбора и обработка ошибок
die(sprintf("ошибка : %s строка %d", xml_error_string(xml_get_error_code($xml_parser)),
		xml_get_current_line_number($xml_parser)));}
	
xml_parser_free($xml_parser);          //   освобождение обработчика событий
При парсинте и формировании массива - пустые теги не обрабатываются, т.е. я получаю массив:
Array(
[0] => Компьтер
[1] => монитор
[2] => плата)
вместо:
Array(
[0] => Компьтер
[1] => ''
[2] => монитор
[3] => ''
[4] => плата)

Кто сталкивался и как с этим бороться....
 
Сверху