6

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

来自 YAML:

- fruits: 
  - apple
  - pear
  - orange

到 XML:

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

3 回答 3

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

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

于 2012-12-04T21:18:45.503 回答
1

不,没有 CPAN 模块。有CPAN 模块来读取 YAML并且有模块来编写 XML。数据传输将是 perl 数据结构。

问题是您的 XML 应该在什么模式中,并且有许多不同的 XML 模块,因此也没有一个完美的答案。

于 2012-08-08T18:04:04.100 回答
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”。

于 2016-09-09T06:20:04.277 回答