[Dancer-users] outputting xml

Daniel Pittman daniel at rimspace.net
Thu Aug 19 06:13:03 CEST 2010


Maurice Mengel <mauricemengel at gmail.com> writes:

> I don't quite understand how to output xml. I get an error message
> because after my xml there is "HTTP/1.0 200 OK"
>
> Something like
> </granularity></Identify></OAI-PMH>HTTP/1.0 200 OK
>
> I guess it is the line "HTTP/1.0 200 OK Content-Type: text/html
> X-Powered-By: Perl Dancer 1.1805 1" which I am trying to disable. How?
>
> Right now I create XML by using HTTP::OAI, i.e.
>
>  	$response->set_handler( XML::SAX::Writer->new( Output => \*STDOUT ) );
> 	$response->generate;

You should return your response as a string[1], not write it to STDOUT.

What you are doing is actually sending your XML out *before* all the HTTP
handling happens; try this instead:

get '/example/' => sub {
  my $xml;
  $response->set_handler( XML::SAX::Writer->new( Output => \$xml ) );
  $response->generate;
  return $xml;
}

More efficient choices may also exist for getting this out the way you want.

        Daniel

Footnotes: 
[1]  ...other options like a file handle exist, but are more complex.

-- 
✣ Daniel Pittman            ✉ daniel at rimspace.net            ☎ +61 401 155 707
               ♽ made with 100 percent post-consumer electrons


More information about the Dancer-users mailing list