вопрос по парсеру xml

Статус
В этой теме нельзя размещать новые ответы.

zhito

Местный житель
Регистрация
23 Авг 2007
Сообщения
165
Реакции
23
есть такой парсер xml
PHP:
function startElement($parser, $name, $attrs) {
   if ($attrs["PRODUCT"] == 'blabla') {
	echo $attrs["PRICE"];
	}
}

function endElement($parser, $name) {
 
}

function stringElement($parser, $desc) {
	echo $desc;    
}

$file  = "data.xml";
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "stringElement");

if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
}

while ($data = fgets($fp)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        echo "<br>XML Error: ";
        echo xml_error_string(xml_get_error_code($xml_parser));
        echo " at line ".xml_get_current_line_number($xml_parser);
        break;
    }
}
   
xml_parser_free($xml_parser);

вопрос как сделать так чтобы $desc из функции stringElement выводилась только когда $attrs["PRODUCT"] == 'blabla' ?
 
А если сделать такие изменения?
PHP:
function startElement($parser, $name, $attrs){
	if($attrs["PRODUCT"]=='blabla'){
		$GLOBALS['outStringElement']=1;
		echo $attrs["PRICE"];
	}else{
		$GLOBALS['outStringElement']=0;
	}
}

function endElement($parser, $name){

}

function stringElement($parser, $desc){
	if($GLOBALS['outStringElement']==1)
		echo $desc;
}
 
нет, к сожалению, так вообще $desc не выводится, а в первом (моем) варианте выходят вообще все существующие в базе :(
 
Как вам вариант все считать в массив, а затем перебрать массив?
Как прочитать в архив :read:
 
PHP:
function stringElement($parser, $desc) { 
    global $attrs;

    if ($attrs["PRODUCT"] == 'blabla')
    {
    	echo $desc;
    }
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху