У меня есть фильтр 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);
}