如何在Perl中将YAML转换为XML?

时间:2012-08-08 09:49:38

标签: xml perl yaml

CPAN中是否有任何模块可以将YAML列表转换为格式良好的XML?

来自YAML:

- fruits: 
  - apple
  - pear
  - orange

到XML:

<fruits>
  <apple />
  <pear />
  <orange />
</fruits>

3 个答案:

答案 0 :(得分:2)

use strictures;
use YAML "Load";
use XML::Simple "XMLout";

my $data = Load(do{ local $/; <DATA> });
print XMLout( $data, XMLDecl => 1 );

__DATA__
---
- fruits:
    - apple
    - pear
    - orange

可能XMLout的选项组合,它们将是DWYW,您可能需要跳过数据结构以获取所需的根名称等。您将从中注意到将XML序列化和编组为其他数据格式的令人眼花缭乱的选项绝对不简单。阅读:XML::SimpleYAML

答案 1 :(得分:1)

没有没有CPAN模块。有CPAN modules to read YAML,有modules to write XML。数据传输将是perl数据结构。

问题是你的XML应该是什么模式,并且有许多不同的XML模块,所以也没有一个完美的答案。

答案 2 :(得分:0)

CPAN可以帮助您Util::XML_YAML_PERL

use Util::XML_YAML_Perl;

my $obj = Util::XML_YAML_PERL->new();

my $yaml_text = <<UNTIL_HERE;
- fruits: 
  - apple
  - pear
  - orange
UNTIL_HERE

print $obj->yaml_to_xml( $yaml_text );

# <fruits>
#  <apple />
#  <pear />
#  <orange />
# </fruits>

注意:此模块有一个小故障,可以使用补丁:Util :: XML_YAML_Perl是正确的包,而不是其pod文档中的“XML :: YAML_PERL”。