MooseX::DOMってのを作りました。オブジェクトの裏にXMLで定義されたデータが存在していて、それに対して操作するために使う物です。DBIx::ClassとかがObject Relational Mapperなら、これはObject XML MapperでOXMですね。
ともあれ。これを使うと在る程度単純なXMLに関しては簡単にaccessorとかを定義することができます。こんなXMLを操作するためのオブジェクトを作りたいと仮定します:
<foo>
<bar>適当な文言</bar>
<baz>ほげほげ</baz>
</foo>
その場合、こんな感じで定義すると
package Foo;
use Moose;
use MooseX::DOM;
has_dom_root 'foo';
has_dom_child 'bar';
has_dom_child 'baz';
no Moose;
no MooseX::DOM;
こういうふうに使えちゃいます
my $foo = Foo->from_file( '/path/to/xml' );
print $foo->bar(); # "適当な文言"
print $foo->baz(); # "ほげほげ"
$foo->bar( "XYZ" );
print $foo->bar(); # "XYZ"
(個人的には)超便利ッ!
コメント