2
我使用XML::Twig從頭開始創建一個新的XML文檔。根元素應該有一個前綴和一個名稱空間聲明。所有的孩子也應該屬於這個名字空間並且使用這個前綴。如何使用包含名稱空間聲明和前綴名稱的XML :: Twig創建XML?
輸出應該是這樣的:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<abc:root xmlns:abc="http://www.somehost.com/abc-data/ns/5.0.0" version="5.0.0.0">
<abc:element name="myElement">
This is my element
</abc:element>
</abc:root>
我想這會看起來有點像這樣:
my $new_twig = XML::Twig->new(map_xmlns => {'http://www.somehost.com/abc-data/ns/5.0.0' => "abc"}, pretty_print => 'indented');
my $root = XML::Twig::Elt->new('root');
$new_twig->set_encoding('UTF-8');
$new_twig->set_standalone("no");
$new_twig->set_root($root);
my $element = XML::Twig::Elt->new('element' => {'name'=>'myElement};
$element->set_text('This is my element');
$element->paste(last_child=>$root);
# print in a file
open (TMP, "> $new_file_name");
select TMP;
$new_twig->print(\*TMP);
close TMP;
這看似簡單,但我仍然是一個牛逼到Perl和這讓我很難過! 感謝您的幫助!
感謝您的回答。這看起來不錯。不幸的是,它不運行,而是在twig_test.ipl第16行通過「XML :: Twig :: Elt」包找到對象方法「print_to_file」。 – Hoodlet 2012-03-27 11:50:20
@Hoodlet - 已經添加了'print_to_file'方法在3.36版本 - 請參閱[更改文件](http://cpansearch.perl.org/src/MIROD/XML-Twig-3.39/Changes) – bvr 2012-03-27 13:25:32
@Hoodlet:我已經添加到我的答案提供一個替代解決方案,只有一個早期版本的XML :: Twig可用。 – Borodin 2012-03-27 15:27:45