【问题标题】:How can I use XML serializer in Perl Dancer2?如何在 Perl Dancer2 中使用 XML 序列化程序?
【发布时间】:2015-03-29 23:32:00
【问题描述】:

在 Dancer 中你可以使用:

set serializer => 'Mutable';

set serializer => 'XML'

舞者2:

set serializer => 'XML'

你有

Unable to load class for Serializer component XML: Can't locate Dancer2/Serializer/XML.pm

CPAN 中没有Dancer2::Serializer::XML

Dancer2 中的 Mutable 仅支持 JSON、YAML、Dumper :-(

【问题讨论】:

  • Dancer2 中还没有 XML 序列化器,CPAN 上也没有模块。这是 Dancer1 仍然优于 Dancer2 的(少数?)情况之一。但是您可以很容易地编写您的Dancer2::Serializer::XML,或者只是“手动”将您的数据编码为 XML。

标签: xml perl dancer


【解决方案1】:

快速入门:

package Dancer2::Serializer::XML;
use Moo;
use Carp 'croak';
use Encode;
use Class::Load 'load_class';
with 'Dancer2::Core::Role::Serializer';

has '+content_type' => ( default => sub {'text/xml'} );

sub BUILD { load_class('XML::Simple') }

sub serialize {
    my ( $self, $entity ) = @_;
    XML::Simple::XMLout($entity);
}

sub deserialize {
    my ( $self, $content ) = @_;
    XML::Simple::XMLin($content);
}

1;

我刚刚从Dancer::Serializer::XMLDancer2::Serializer::YAML 组装了这个。它远未完成或准备发布,但也许对你来说是一个开始?

我将此作为社区 wiki 答案提供。

【讨论】:

  • 自 2012 年(发布此答案前 2.5 年)以来,XML::Simple 已将自己记录为已弃用。为什么?它不支持Unicode。这个示例代码看起来很像现在 CPAN 中的 Dancer2::Serializer::XML 模块......它同样使用 XML::Simple,因此在 unicode 上中断。 :(
  • @TheAmigo 我对此一无所知,并且发现这是 2020 年的一个严重弱点。我认为您应该将此作为序列化程序模块的错误提交,并且可能会得到修复。
猜你喜欢
  • 2023-04-10
  • 1970-01-01
  • 2016-12-10
  • 2015-06-25
  • 2016-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多