Nie wiem czy o to Ci chodzi ale ja zauważyłem, że simplexml przerywa parsowanie wartości w momencie napotkania spacji lub ;polskich znaków (innych pewnie też). Wtedy wywoływana jest funkcja ustawiona przez xml_set_character_data_handler, do której jako parametr przekazywana jest do tej pory odczytana wartość.
Gdy parser odczyta dalszą część wartości to znów wywoływany jest handler, tym razem jako parametr przekazywana jest dalsza część odczytanej wartości.
Rozwiązanie jest takie, że w funkcji ustawionej przez xml_set_character_data_handler trzeba doklejać wartość otrzymywaną przez parametr a nie nadpisywać.
<?php
private function UchwytDane($xml, $dane) {
$dane_odczytane .= $dane;
}
?>
zamiast
<?php
private function UchwytDane($xml, $dane) {
$dane_odczytane = $dane;
}
?>