Модуль XML::Twig
больше подходит для обработки существующего XML, а не для создания новых данных с нуля. Все, что вам нужно для создания нового XML-документа - это класс XML::Twig::Elt
: основной класс XML::Twig
не имеет значения.
Существует много способов создания XML-документа. Вот пример, который создает XML, который вы показали в качестве примера
use strict;
use warnings;
use XML::Twig;
my $new_file_name = 'new.xml';
my $root = XML::Twig::Elt->new('abc:root', {
'xmlns:abc' => "http://www.somehost.com/abc-data/ns/5.0.0",
version => "5.0.0.0",
});
$root->insert_new_elt('abc:element' => {name => 'myElement'}, 'This is my element');
$root->set_pretty_print('indented');
$root->print_to_file($new_file_name);
выход
<abc:root version="5.0.0.0" xmlns:abc="http://www.somehost.com/abc-data/ns/5.0.0">
<abc:element name="myElement">This is my element</abc:element>
</abc:root>
UPDATE
Если вам сложно обновить до последней версии XML::Twig
, вы можете добиться эквивалентного эффекта, заменив вызов на print_to_file
на
open my $out, '>:utf8', $new_file_name or die qq(Cannot create "$filename": $!);
$root->print($out);