NAME

Class::DBI::ToSax - turn database objects to SAX events

SYNOPSIS

package My::DBI;
# NB!  Must come first in inheritance chain!
use base qw( Class::DBI::ToSax Class::DBI );

# In the application...
use XML::SAX::Writer;
my $obj = My::DBI->retrieve( $x );
my $w = XML::SAX::Writer->new;
$obj->to_sax( $w );

DESCRIPTION

This module adds an extra method to Class::DBI, to_sax(). All the usual sorts of SAX handler can be passed in. The example above shows a writer to send the XML to stdout.

NB: This class must come first in the inheritance chain because it overrides ordinary Class::DBI methods.

The generated XML will have:

  • One wrapper element, which is the name of the table, with an id attribute.

  • One containing element for each column which has a scalar value.

  • One element for each has_a() relationship, which will be nested.

  • Zero or more elements for each has_many() relationship, each of which will be nested.

METHODS

to_sax( HANDLER, [ OPTS ] )

Transform the object into XML via SAX events on HANDLER. OPTS may be a series of key value pairs. Valid keys include:

norecurse

If true, do not recursively call contained objects. There will still be an element for the contained object, but it will only contain an id attribute.

SEE ALSO

Class::DBI, XML::SAX, XML::SAX::Writer.

If you want to generate XML directly from the database without using Class::DBI, look at XML::Generator::DBI.

BUGS

We should be able to flag some fields as containing CDATA. I'm not sure of the best interface to do this, however.

AUTHOR

Dominic Mitchell, <cpan@semantico.com<gt>

COPYRIGHT AND LICENSE

Copyright 2003 by semantico

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.