in reply to Extracting data from XML file

In XML file there is a possibilty that multiple entries under same tag name can exist. Ex:...

That is not XML.

In case 'B' it returns me an array of hashes of B's data.

What is it? Please write a complete, self-contained program that demonstrates what you get, and how it differes from what you want ( see How (Not) To Ask A Question ).

Replies are listed 'Best First'.
Re^2: Extracting data from XML file
by dHarry (Abbot) on Feb 23, 2010 at 11:24 UTC

    That is not XML.

    I'm not quite sure how to interpret the multiple entries under same tag name can exist.. On the other hand tags can repeat an even values within tags can repeat (though there are better solutions). In both cases it is well formed XML.

    With minor edits the example provided is well formed XML.

    <?xml version="1.0" encoding="UTF-8"?> <GEN_FSM xsi:noNamespaceSchemaLocation="Desktop/test.xsd" xmlns:xsi="h +ttp://www.w3.org/2001/XMLSchema-instance"> <State> <Name>POWERED</Name> <Comment>USB POWERED State</Comment> </State> <State> <Name>DEFAULT</Name> <Comment>USB DEFAULT State</Comment> </State> <State> <Name>ADDRESS</Name> <Comment>USB ADDRESS State</Comment> </State> <Rst_Arc> <To_State>DEFAULT</To_State> <monitor_mode_event_name>HOT_RST</monitor_mode_event_name> <monitor_mode_event_count>1</monitor_mode_event_count> <comment>HOT_reset_to_DEFAULT</comment> </Rst_Arc> </GEN_FSM>

    It can even be validated by a schema (auto generated):

    <?xml version="1.0" encoding="UTF-8"?> <xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.or +g/2001/XMLSchema"> <xsd:element name="GEN_FSM"> <xsd:complexType> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="State"/> <xsd:element ref="Rst_Arc"/> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="State"> <xsd:complexType mixed="true"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="Name"/> <xsd:element ref="Comment"/> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="Name" type="xsd:string"/> <xsd:element name="Comment" type="xsd:string"/> <xsd:element name="Rst_Arc"> <xsd:complexType mixed="true"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="To_State"/> <xsd:element ref="monitor_mode_event_name"/> <xsd:element ref="monitor_mode_event_count"/> <xsd:element ref="comment"/> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="To_State" type="xsd:string"/> <xsd:element name="monitor_mode_event_name" type="xsd:string"/> <xsd:element name="monitor_mode_event_count" type="xsd:integer"/> <xsd:element name="comment" type="xsd:string"/> </xsd:schema>

    Cheers

    Harry