Sponsored Content
Top Forums Programming help me with perl script xml processing Post 302580722 by pavani reddy on Friday 9th of December 2011 11:33:39 AM
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.
 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
XML::Validate::LibXML(3pm)				User Contributed Perl Documentation				XML::Validate::LibXML(3pm)

NAME
XML::Validate::LibXML - Interface to LibXML validator SYNOPSIS
my $validator = new XML::Validate::LibXML(%options); if ($doc = $validator->validate($xml)) { ... Do stuff with $doc ... } else { print "Document is invalid "; } DESCRIPTION
XML::Validate::LibXML is an interface to the LibXML validating parser which can be used with the XML::Validate module. METHODS
new(%options) Returns a new XML::Validate::LibXML instance using the specified options. (See OPTIONS below.) validate($xml) Returns a true value if $xml could be successfully parsed, undef otherwise. Returns a true (XML::LibXML::Document) if $xml could be successfully parsed, undef otherwise. last_dom() Returns the DOM (XML::LibXML::Document) of the document last validated. last_error() Returns a hash ref containing the error from the last validate call. This backend currently only fills in the message field of hash. Note that the error gets cleared at the beginning of each "validate" call. version() Returns the version of the XML::LibXML module that is installed OPTIONS
XML::Validate::LibXML takes the following options: strict_validation If this boolean value is true, the document will be validated during parsing. Otherwise it will only be checked for well-formedness. Defaults to true. base_uri Since the XML document is supplied as a string, the validator doesn't know the document's URI. If the document contains any components referenced using relative URI's, you'll need to set this option to the document's URI so that the validator can retrieve them correctly. ERROR REPORTING
When a call to validate fails to parse the document, the error may be retrieved using last_error. On errors not related to the XML parsing, these methods will throw exceptions. Wrap calls with eval to catch them. DEPENDENCIES
XML::LibXML BUGS
last_error currently returns a hash ref with only the message field filled. It would be nice to also fill the line and column fields. VERSION
$Revision: 1.20 $ on $Date: 2005/09/06 11:05:08 $ by $Author: johna $ AUTHOR
Nathan Carr, Colin Robertson <cpan _at_ bbc _dot_ co _dot_ uk> COPYRIGHT
(c) BBC 2005. This program is free software; you can redistribute it and/or modify it under the GNU GPL. See the file COPYING in this distribution, or http://www.gnu.org/licenses/gpl.txt perl v5.10.1 2006-04-19 XML::Validate::LibXML(3pm)
All times are GMT -4. The time now is 04:02 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy