Как вставить события в XML :: SAX :: Pipeline - PullRequest
3 голосов
/ 05 ноября 2010

У меня есть фильтр SAX, который хочет вставить некоторый контент в текущий поток для обработки нижестоящими обработчиками (т. Е. Добавить узел в вывод).Как это можно сделать?Я думал, может быть, я мог бы создать новый конвейер (подключенный к $self) и вызвать parse_string(), но это не сработало:

Trying to pop context without push context at /usr/lib/perl5/vendor_perl/5.10/XML/NamespaceSupport.pm

Обработчик выглядит примерно так:

package My::Filter;
use base qw(XML::SAX::Base);

sub end_element {
  my $self = shift;

  if($insertStuff) {
    # WHAT TO DO HERE? 
    # This doesn't work
    XML::SAX::ParserFactory->parser( Handler => $self)->parse_string("<new>content</new>");
  }

  $self->SUPER::start_element($element); 
}
...