我需要在Perl中创建XML.根据我的阅读,XML :: LibXML非常适合解析和使用来自其他地方的XML.有没有人对XML Writer有任何建议?是XML ::作家仍然保持?有没有人喜欢/使用它?
除了功能完整性之外,我对一个易于使用的语法感兴趣,因此请在答案中描述您喜欢该模块的语法和任何其他原因.
请回答每个回答一个建议,如果有人已经回复了您的最爱,请将该回答投票.希望很容易看到最受欢迎的东西.
谢谢!
仅供记录,这是一个使用XML :: LibXML的片段.
#!/usr/bin/env perl # # Create a simple XML document # use strict; use warnings; use XML::LibXML; my $doc = XML::LibXML::Document->new('1.0', 'utf-8'); my $root = $doc->createElement('my-root-element'); $root->setAttribute('some-attr'=> 'some-value'); my %tags = ( color => 'blue', metal => 'steel', ); for my $name (keys %tags) { my $tag = $doc->createElement($name); my $value = $tags{$name}; $tag->appendTextNode($value); $root->appendChild($tag); } $doc->setDocumentElement($root); print $doc->toString();
这个输出:
blue steel
XML :: Writer仍然维护(至少,截至今年2月),它确实是最受欢迎的Perl XML编写者之一.
至于描述语法,最好查看模块的文档(链接已经在问题中).以机智:
use XML::Writer; my $writer = new XML::Writer(); # will write to stdout $writer->startTag("greeting", "class" => "simple"); $writer->characters("Hello, world!"); $writer->endTag("greeting"); $writer->end(); # producesHello world!
如果你想在Perl中获取数据结构并将其转换为XML,那么XML :: Simple将很好地完成工作.
最简单的:
my $hashref = { foo => 'bar', baz => [ 1, 2, 3 ] }; use XML::Simple; my $xml = XML::Simple::XMLout($hashref);
顾名思义,它的基本用法很简单; 但是如果你需要的话,它确实提供了很多功能.
当然,它也可以轻松解析XML.
我没有做太多的XML,但XML :: Smart看起来可能会做你想要的.请查看文档中的创建XML数据部分,它看起来非常简单易用.
解释文档:
use XML::Smart; ## Create a null XML object: my $XML = XML::Smart->new() ; ## Add a server to the list: $XML->{server} = { os => 'Linux' , type => 'mandrake' , version => 8.9 , address => [ '192.168.3.201', '192.168.3.202' ] , } ; $XML->save('newfile.xml') ;
哪个会把它放在newfile.xml中:
192.168.3.201 192.168.3.202
凉.我将不得不玩这个:)