help me with perl script xml processing


 
Thread Tools Search this Thread
Top Forums Programming help me with perl script xml processing
# 1  
Old 12-09-2011
help me with perl script xml processing

Hi everyone,
I have Xml files in a folder, I need to extract some attribute values form xml files and store in a hash. My xml file look like this.


Code:
<?xml version="1.0" encoding="UTF-8"?>

<Servicelist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///files/service.xsd">

<Service Num="B7a" Name="temperature sensor">

<Des>It delivers actual temperature in the form ov Volts</Des>

<Customermodules>

   <Softwaremodule Service="ADC" Path="/main/ADCservice.xml"/>

</Customermodules>

<Suppliermodules>

   <Softwaremodule Service="input" Path="/main/inputservice.xml"/>
   <Softwaremodule Service="signal" Path="/main/signalservice.xml"/>
   <Hardwaremodule Type="engine"  Nr="18" Servicenum="1" Path="/main/engineservice.xml"/>
   <Hardwaremodule Type="motor"   Nr="7" Servicenum="1" Path="/main/motorservice.xml"/> 
   <Hardwaremodule Type="supply" Nr="1" Servicenum="1" Path="/main/supplyservice.xml"/>

</Suppliermodules>

</Service>

In hash service num attribute is the key and Customermodules ,Suppliermodules attributes are the values.
for example In the xml file B7a is the key and its Customermodules ,Suppliermodules attribute values are the values to the key, like that.

I tried like this but Its not working
Code:
#!/usr/bin/perl
use warnings;
use strict;
use XML::LibXML;
use Carp;
use File::Find;
use File::Spec::Functions qw( canonpath );
use XML::LibXML::Reader;  
my %hash;
my @ARGV ="C:/Main";
die "Need directories\n" unless @ARGV;
find(
    sub {
        return unless ( /(_service\.xml)$/ and -f );
        extract_information();
        return;
    },
    @ARGV
);

sub extract_information {
    my ($path $hash) = $_;
	
if( my $reader = XML::LibXML::Reader->new( location => $path )){

        while ( $reader->nextElement( 'Service' )) {
         my $elem = $reader->getAttribute( 'Id');
         
		 $reader->nextElement( 'Customermodules' );         
		  my $elem1 = $reader->getAttribute( 'Service');
		 
		  $reader->nextElement( 'Suppliermodules' );         
		  my $elem2 = $reader->getAttribute('Service');
		  
		   $hash->{$elem} = $elem1;
		   push @{$hash{$elem}}, '$elem2';
}
						}
 return;
 }
  print my $num=keys%hash;

Can any one help me with the script, that extract attributes from xml file and store in a hash,
I need to get all attributes in Suppliermodules( type, nr), no need of path attribute at any where.
Please help me with this problem,i am learning perl scripting language.

Thanks in advance.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl script required for processing the data

I have following result.log file (always has 2 lines) which I need to process, cat result.log name.cmd.method,"result","abc","xyz"; name="hello,mine.12345,"&"tree"&" xyz "&" tree "&" xyz", data="way,"&" 1"&"rate-me"&"1"&"rate-me",str="",ret=""; now I need to extract the strings/data as... (4 Replies)
Discussion started by: perlDiva
4 Replies

2. Shell Programming and Scripting

perl script to update a xml file

Hi experts, I have a set of xml files in folder which has the below field. <mm:sessionID>157.235.206.12900397BE4:A</mm:sessionID>, I need to update this field regularly with new session id, which I have it from a login file. Can anyone tell me how to add a new value in <mm:sessionID>... (3 Replies)
Discussion started by: amvarma77
3 Replies

3. Shell Programming and Scripting

perl script processing error

open(IN,"input_file") or die "Can't open Input file.\n"; while (<IN>) { chomp; $line = $_; if($line != '') { print "\nprocessing $line\n"; $size = 0; $hrid = $line; @project_id_array = null; $size = @project_id_array;... (3 Replies)
Discussion started by: vishwakar
3 Replies

4. Shell Programming and Scripting

How to get value from xml node using sed/perl/script?

hello, new to this forum. but i have a requirement to extract the value from multiple xml node and print out the values to new file with comma seperated. would like to know how this would be done using either sed/perl or some unix script. an example would be tremendous... sample input file:... (2 Replies)
Discussion started by: davidsouk
2 Replies

5. Shell Programming and Scripting

How to create a xml file using Perl Script

Hi All, I have some data which needs to be saved in the xml file format.Can you guys please let me know how to do this using perl script. NOTE: the template of the xml file shall be depending on validation of the data done for some requirements. Basically to summarise, the fields in the xml... (5 Replies)
Discussion started by: girish.raos
5 Replies

6. Shell Programming and Scripting

Perl script to extract 'ID' From XML File

File1.xml <?xml version.........> - <abcd:abcd_list version="1" www.john_uncle's_server.com" xmlns: - <device id="100"> <firmware>12.4(3d)</firmware> <location id="500">Sitting Room</location> </device> - <device id="101"> <firmware>12.4(3d)</firmware> <location id="501">Class... (1 Reply)
Discussion started by: sureshcisco
1 Replies

7. Shell Programming and Scripting

Simple Script needed for Processing CSV file perl

I am new to perl, and need a script to pull a CSV file, strip out 2 leading columns, and 2 ending columns, and resave the file in a new location. The file is basic and has less than 10,000 records. Secondly, can I schedule perl scripts to run daily? Can someone provide the basic script to... (1 Reply)
Discussion started by: cobbjob
1 Replies

8. Shell Programming and Scripting

awk, perl Script for processing a single line text file

I need a script to process a huge single line text file: The sample of the text is: "forward_inline_item": "Inline", "options_region_Australia": "Australia", "server_event_err_msg": "There was an error attempting to save", "Token": "Yes", "family": "Family","pwd_login_tab": "Enter Your... (1 Reply)
Discussion started by: hmsadiq
1 Replies

9. Shell Programming and Scripting

perl script for file processing

Aim: To scan a file and ignore all characters that has an ASCII value from 0 to 31 and 127 to 255 and accept only those characters having an ASCII between 32 and 126. Script: #!/usr/local/bin/perl $filename = "$ARGV"; if (-e $filename) { open(OUT, "${filename}") || die "can't... (10 Replies)
Discussion started by: SEEHTAS
10 Replies

10. Shell Programming and Scripting

Shell Script syntax for XML processing

Hi All, I am new to Shell scripting. I have a log file containing XML Messages.Each XML Message is accompanied with a timestamp.I need to count the the number of messages that get logged in a particular timeinterval.Is there any command/Syntax to achieve this. Any code/example is... (5 Replies)
Discussion started by: vignesh53
5 Replies
Login or Register to Ask a Question