Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re: XML::Writer error message

by pKai (Priest)
on Jul 07, 2009 at 07:37 UTC ( #777771=note: print w/replies, xml ) Need Help??

in reply to XML::Writer error message

You need to set up the top level structure of your output document outside of the while loop.

Also, even if this is nothing which fails your code at the moment, you should also concider using a hash instead of evaling symbolic variable names.

use strict; use warnings; use XML::Writer; #use XML::Reader; use IO::File; open(my $fh,"./input.txt") or die "Cannot open input file."; my $output = new IO::File(">converted_to_xml.xml"); #file to write the + converted content my $writer = new XML::Writer(OUTPUT => $output); #write into the opene +d file my @array=qw(name emp_no designation salary); $writer->xmlDecl("UTF-8"); #XML declaration $writer->startTag("data"); # The root tag while(my $input=<$fh>){ chomp($input); next if !$input; my %vals; @vals{@array} = split /:/, $input; $writer->startTag("row"); # enclosing tag for every data row for my $name (@array) { $writer->startTag($name); $writer->characters($vals{$name}); $writer->endTag(); } $writer->endTag(); # = endTag("row") } $writer->endTag(); # = endTag("data") $writer->end(); $output->close();

Update: Typically you want some structure in the XML document, to address whole data rows. Added the "row" tag level for that.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://777771]
[marioroy]: I also have a Hobo driver for Forklift allowing folks to use in multiple classes, no conflicts with one another. That's not possible for P::FM.
[Discipulus]: congrats marioroy!
[marioroy]: CORE::wait works well eventhough multiple instances or classes using Hobo::Manager.
[Corion]: marioroy: I'm not sure what the normal use for the PID is in P:FM, but I guess that most programs just ignore or log it
[Corion]: Oh, yes, programs could call wait $pid, but if your $pid is an object, then you could add a ->wait method to it and wait $pid would call that automatically "thanks" to indirect object notation
[marioroy]: Just documentation edits is all that remains. Hobo::Simple provides foreach and forseq with identifier capability -- all transparently supporting array, hash, file handle, and seq 1 .. N.
[marioroy]: Corion Regarding PID, that's great. So will leave it so compatible with MCE::Hobo. e.g. ->create returns a Hobo object. Folks can get ->pid from it. So, that's not a problem.
[choroba]: ad readdir: 5.12 needed
[marioroy]: CORE::wait can block if another process reaps a worker from another class. MCE::Hobo takes care of that and transparently.

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (7)
As of 2017-05-26 08:46 GMT
Find Nodes?
    Voting Booth?