Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: Help with XML::Writer

by OeufMayo (Curate)
on Sep 01, 2001 at 04:09 UTC ( #109581=note: print w/ replies, xml ) Need Help??


in reply to Help with XML::Writer

First, I don't think the code you posted work as you expect. The the elements of the two arrays (@Name and @Address must be enclosed between parens. Otherwise, you will only get the first element of the array.

Secondly, I find a bit cumbersome the way your datas are divided in two arrays, one for the names and one for the addresses, unless they are provided to you in this way, I would suggest you put all the user information in an array (or a hash), and put all these arrays into a big one (see perldsc for more infos on data structures.)

Now, about XML::Writer, it tend to agree with Mr. Q&A, I don't like the File::IO voodoo thing you have to do, so I prefer just printing the XML to STDOUT.
As for optimizing you XML::Writer code, you could probably use a loop to go through each element of your structure and write the proper dataElements for each name and address.
The final code should probably look like the following:

#!usr/bin/perl -w use strict; use XML::Writer; my $writer = new XML::Writer( DATA_MODE => 1, DATA_INDENT => 4 ); my @Name = ("Fred Flintsone", "Barney Rubble"); my @Address = ("111 Rock River Lane", "113 Rock River Lane"); my @flinstones; for (0 .. $#Name){ push @flinstones, [ $Name[$_], $Address[$_] ] } # which is the same as : @flinstones = ( [ 'Fred Finstone', '111, Rock River Lane' ], [ 'Barney Rubble', '113, Rock River Lane' ], ); $writer->xmlDecl( "UTF-8", 1 ); $writer->startTag( "Application"); foreach my $character (@flinstones){ $writer->startTag("Customer"); $writer->dataElement("Name", $character->[0] ); $writer->dataElement("Address", $character->[1] ); $writer->endTag("Customer"); } $writer->endTag("Application"); $writer->end(); __END__ Results: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Application> <Customer> <Name>Fred Finstone</Name> <Address>111, Rock River Lane</Address> </Customer> <Customer> <Name>Barney Rubble</Name> <Address>113, Rock River Lane</Address> </Customer> </Application>

Oh, and I'll probably lowercase the name of all the XML elements, but that's just me, maybe you can't do that in your application...

<kbd>--
my $OeufMayo = new PerlMonger::Paris({http => 'paris.mongueurs.net'});</kbd>


Comment on Re: Help with XML::Writer
Download Code
Replies are listed 'Best First'.
Re: Re: Help with XML::Writer
by basicdez (Pilgrim) on Sep 04, 2001 at 18:55 UTC
    Can you please tell me how to redirect the output to a file named xxx.xml without using the IO output redirection?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://109581]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (5)
As of 2015-07-31 23:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (282 votes), past polls