Как мне написать XML обратно, используя XML :: Parser в Perl? - PullRequest
0 голосов
/ 25 июня 2019

Мне нужно изменить документ XML и вернуть его обратно. Я могу сделать это, используя XML :: Parser в Perl, однако я не могу найти способ вернуть его обратно. Не могу найти много, чтобы написать его обратно.

одна из глупых реализаций

use warnings;
use strict;
use XML::Parser;
use Data::Dumper;

sub char_handler
{
        my ($parser, $text) = @_;
        $text = #DO SOMETHING HERE WITH THE TEXT
}

my ($file) = @ARGV;
open(FILE,$file);
$xml=<FILE>;
my $parser = new XML::Parser( Style=>"Tree",
                              Handler => {
                              Char => \&char_handler
                });
my $doc = $parser->parse($xml);

print Data::Dumper->Dump([$doc]);

dumps the XML. 

1 Ответ

2 голосов
/ 26 июня 2019

XML :: Parser - это просто синтаксический анализатор, он на самом деле не предназначен для изменения документа и сохранения его обратно в формате XML.Для этого типа приложения вам нужен модуль с некоторым типом DOM (объектная модель документа), который сохраняет достаточно информации о документе и имеет возможность сериализации обратно в XML.

Я использую и рекомендую XML :: LibXMLи написали учебник , который может оказаться полезным.

Это ни в коем случае не единственный вариант, но он надежный и надежный.Это также проще и более согласованно, чем XML :: Simple (о котором я достаточно знаю, чтобы сказать, не используйте его).

...