Использование SimpleXML с кодировкой Windows-1251 и итераторы

freshlime

Новичок
Использование SimpleXML с кодировкой Windows-1251 и итераторы

Здравствуйте.

Поскольку класс SimpleXML работает только c UTF-8 пытаюсь реализовать автоматическое преобразование выходных данных в кодировку windows. В SimleXML есть возможность использовать пользовательский класс для представления элементов XML. Для этого необходимо унаследовать его от SimpleXMLElement следующим образом:

PHP:
class XMLNode extends SimpleXMLElement
{
   public static $_encoding = 'windows-1251';
   
   public function addAttribute($name, $value)
   {
      parent::addAttribute($name, XML::ToUnicode($value, self::$_encoding));
   }
   
   public function addChild($name, $value)
   {
      return parent::addChild($name, XML::ToUnicode($value, self::$_encoding));
   }
}
В последствии этот класс нужно указать при загрузке XML и он бует использоваться вместо дефолтного SimpleXMLElement:
PHP:
simplexml_load_file($source, 'XMLNode');
SimpleXMLElement как я понял использует итераторы для доступа к содержимому тегов и атрибутам. Например:

PHP:
$data = '<?xml version="1.0" encoding="windows-1251" ?>
<people age="22">
  <leg>Первая</leg>
  <leg>Вторая</leg>
</people>';
$xml = simplexml_load_string($data, 'XMLNode');
echo(Содержимое: '.$xml->people->leg[0]);
echo('Атрибут: '.$xml->people['age']);
Основная проблема заключается в перегрузке операции вроде $xml->people->leg[0] и $xml->people['age'] в XMLNode. При попытке объявления XMLNode следующим образом:

PHP:
class XMLNode extends SimpleXMLElement implements Iterator
получаю ошибку: Fatal error: Class XMLNode could not implement interface Iterator in Unknown on line 0
Может кто решал задачу пергрузки при наследовании классов-итераторов?
 
Сверху