У меня есть одна функция синтаксического анализа xml, которую я пытаюсь вызвать несколько раз, так как мне нужно только удалить небольшие данные и продолжить работу.
Вот функция:
//Parse Product ID from Product Sides
function getProductSpecs($xml,$type) {
// Setup arrary
global $productspecs;
global $count;
$count = 0;
global $type_check;
$type_check = $type;
// Parse the XML
// Create the parser
if (! ($xmlparser = xml_parser_create()) )
{
die ("Cannot create name list parser");
}
// Start tag function
function first($parser, $name, $attribs) {
global $trigger;
if ($name == "PRODUCTSIDEID") {
$trigger = 1;
} elseif ($name == "PRODUCTID") {
$trigger = 1;
}
}
// data handler function
function xml($parser, $data) {
global $trigger;
global $productspecs;
global $count;
global $type_check;
if ($trigger == 1){
if ($type_check == "sideid") {
$productspecs[$count]=$data;
$count = $count + 1;
} elseif ($type_check == "productid") {
$productspecs[$count]=$data;
$count = $count + 1;
}
$trigger = 0;
}
}
// Call the handler functions
xml_set_element_handler($xmlparser, "first", "");
// Call the data handler
xml_set_character_data_handler($xmlparser, "xml");
// Parse the XML data
xml_parse($xmlparser,$xml);
// Clear parser
xml_parser_free($xmlparser);
//Return the array
return $productspecs;
}
Моя проблема возникает, когда это называется:
xml_set_element_handler($xmlparser, "first", "");
Я получаю сообщение об ошибке:
function first($parser, $name, $attribs) {
Функция появляется только один раз, и я предполагаю, что проблема возникает при вызове, но есть ли способ обойти это, поэтому мне не нужно дублировать столько кода. Я собираюсь повторить это несколько раз.
Спасибо.