Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Xml File Reading from PERL

by issaq (Initiate)
on Feb 15, 2012 at 06:33 UTC ( [id://953845]=perlquestion: print w/replies, xml ) Need Help??

issaq has asked for the wisdom of the Perl Monks concerning the following question:

Iam using this code for
my $config = XMLin("/developer/imoham5/${lctblnm}_colnames.config", Fo +rceArray => 1, keyattr => [] ); my @fieldlist = eval{ @{$config->{columnname}} };
The above code is working fine for the XML file whose format is like:-
<table> <columnname>DATE_CREATED_ODS</columnname> <columnname>DATE_MODIFIED_ODS</columnname> </table>
Now my XML format has changed it to :-
<config> <table name="emp"> <columnname>DATE extract</columnname> <columnname>DATE_deleted</columnname> </table> <table name="salary"> <columnname>DATE1</columnname> <columnname>DATE2</columnname> </table> </config>
I will pass the table name as input(say as salary) and the code has tp fetch all the details related to salary table

Replies are listed 'Best First'.
Re: Xml File Reading from PERL
by kielstirling (Scribe) on Feb 15, 2012 at 09:11 UTC
    Hi,

    <rant>

    It's hard to follow your post in the current format. When you are posting a question you'll find that you will get a better response if you follow the site rules for posting follow this link to find more details.

    </rant>

    Ok, so you have a problem parsing a XML file. A good place to start is to dump out the reference return by XMLin. This will give you all the clues you'll need to retrieve the data you require. Below is a small example script....

    #!/usr/bin/perl -w use strict; use XML::Simple; use Data::Dumper; $/ = undef; my $string = <DATA>; my $ref = XMLin($string); print Dumper $ref; __DATA__ <config> <columnname>DATE extract</columnname> <columnname>DATE_deleted</columnname> <columnname>DATE1</columnname> <columnname>DATE2</columnname> </config>

    You'll find that this example outputs the following.

    $ perl xml.pl $VAR1 = { 'columnname' => [ 'DATE extract', 'DATE_deleted', 'DATE1', 'DATE2' ] };

    So $ref->{columnname} is a reference to an array. You can access it like.

    my @columnames = @{$ref->{columnname}}; or loop over it without assignment. printf "%s\n", $_ for (@{$ref->{columnname}});
      Thanks so much for the reply.... i will follow it from now on Now my xml file looks like ConfigFile.xml **************** <config> <table name="contract"> <columnname>DATE extract</columnname> <columnname>DATE_deleted</columnname> </table> <table name="contract_hist"> <columnname>DATE1</columnname> <columnname>DATE2</columnname> </table> <table name="address"> <columnname>DATE1</columnname> <columnname>DATE2</columnname> <columnname>DATE3</columnname> </table> </config> I read my config xml file, for "address" i should get 3 date values(DA +TE1,DATE2 and DATE3) How can i do this in code?? Please help </config>
        Hi,

        If you run the new XML format via the example script I showed you it will output the new data structure.

        I'm not going to do it for you however I am willing to help you. If you have problems with complex data structures I suggest you read the following The Perl Data Structures Cookbook

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://953845]
Approved by planetscape
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (8)
As of 2024-04-16 08:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found