Dom Xml - ошибка.

cDLEON

Онанист РНРСlub
Dom Xml - ошибка.

Вот небольшая ф-я для парсинга ХМЛ-ок долго с этой библиотекой не разбирался, не нужно выкладывать лучший парсинг....
PHP:
function XMLparse($str)
	{
	$str='<root>'.$str.'</root>';
	$dom=domxml_open_mem($str);
	$elements=$dom->get_elements_by_tagname("root");
	$child=$elements[0]->first_child();
	$i=0;
	while($child)
		{
		if(!isset($child->tagname))
			{
			$child = $child->next_sibling();
			continue;
			}
		$arr[$i]['com']=$child->tagname;
		$attr=$child->attributes();
		for($j=0;$j<count($attr);$j++)
			$arr[$i][strtoupper($attr[$j]->name)]=iconv("UTF-8","windows-1251",$attr[$j]->value);
	$child = $child->next_sibling();
		$i++;	
		}
	return $arr;
	}
Дело вот в чём.... Когда эта ф-я работает в отдельном процессе, всё работает просто отлично.
НО. Как только я её запихиваю её в класс который работает с сокетным соединением, и пасрит все данные пришедшие на сервер он выдаёт вот такую ошибку: Premature end of data in tag root line 1
Все данные пришедшие цельный ХМЛ, не вызывающий ни каких ошибок, при парсинге в отдельном процессе этой же ф-ей.
 

ZN

Новичок
cDLEON
ну так и откуда нам знать, что делает ваш "класс который работает с сокетным соединением" и как вы запихиваете эту функцию в этот класс?
 

cDLEON

Онанист РНРСlub
ZN
Ф-ю пихаю точно так же как она выглядит сейчас.
Использую $this->XMLparse($str);
Класс слишком большой что б его выкладывать. Поэтому решил вылажить только ф-ю.
Класс слушает сервер, если что либо получает(а там может быть несколько хмл-ок такого вида: <XML param="asd" /><XML2 param="asdfgh" />) то парсит это вот этой ф-ей.. В ф-и есть ещё пару пораметроФ берущих данные из класса, но они не как не могут повлиять на парсинг, поэтому я их тоже не вылаживал.
 

ZN

Новичок
вы смотрели на $str непосредственно перед вызовом $this->XMLparse($str); ? вы хотите сказать, что в $str номальный xml, но он не парсится?
 

cDLEON

Онанист РНРСlub
ZN
Это я и хотел сказать в первом посте делал вывод, потом засовывал в эту же ф-ю но в отдельный процесс....всё работает, а в том процессе в массиве появляется только параметры первого ХМЛ-а остальные он попросту игнорит.

-~{}~ 03.04.06 19:22:

Переписал всё это на xml_parse....
Теперь выдаёт вот такую ошибку: not well-formed (invalid token)
Опять же скопировал ту строку которую не может отпарсить парсер и всунул в отдельный процесс с похожой ф-ей только на xml_parse, всё парсится без проблем..
Помогите с этим бредом пожалуйсто....
 
Сверху