Por favor, nunca use a análise de linha com base em 'linha' e 'expressão regular' de XML. É uma ideia muito ruim - existem várias variedades de formatação XML que são perfeitamente válidas e semanticamente idênticas, mas que corresponderão a diferentes expressões regulares.
Então minha resposta seria - use um analisador. Gostaria de começar com perl
e XML::Twig
e fazer algo assim:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
my $twig = XML::Twig->new(
'twig_handlers' => {
'attribute[@type="binary" and @name="picture"]' => sub { $_->delete }
}
);
$twig ->parsefile ( 'your_file' );
$twig -> print;|
Para economizar memória, XML::Twig
permite que você use purge
e flush
. Isso precisaria ser acionado em um dos 'blocos' lógicos do seu documento XML, portanto, não posso dar um exemplo sem mais informações. No entanto, você faria isso como um manipulador de gravetos, além de gravar os 'dados até o momento' em seu arquivo de saída.