Hello bhushanQA,
The XML you’ve shown is not valid, as the <Event> element has no closing tag. When that is added, reading the XML is fairly straightforward. I’m not sure exactly what you’re trying to do; this is my best guess:
#! perl
use strict;
use warnings;
use XML::Simple;
my $xml = do { local $/; <DATA>; };
my $xml_Event = XMLin($xml);
for (keys %{ $xml_Event->{attribute} })
{
printf "'%s' is %srequired\n", $_,
$xml_Event->{attribute}{$_}{required} =~ /true/i ? '' : 'no
+t ';
}
__DATA__
<Event name="Constants" id="0" ui-visible="0" version="0" serviceKey="
+0" rateTableName="">
<properties>
<visible> false </visible>
</properties>
<attribute identifier="00">
<name> session_id </name>
<type> string </type>
<required> true </required>
<ilog>
<alternate> session id in string format </alternate>
<visible> false </visible>
</ilog>
</attribute>
<attribute identifier="01">
<name> volume </name>
<type> int </type>
<required> false </required>
<ilog>
<alternate> the volume </alternate>
<visible> false </visible>
</ilog>
</attribute>
</Event>
Output:
0:40 >perl 1313_SoPW.pl
' volume ' is not required
' session_id ' is required
0:40 >
But please note the following from the documentation for XML::Simple:
STATUS OF THIS MODULE
The use of this module in new code is discouraged. Other modules are available which provide more straightforward and consistent interfaces. In particular, XML::LibXML is highly recommended.
Hope that helps,