#!/usr/bin/perl use XML::Simple; use Data::Dumper; my $file = $ARGV[0]; $xml = new XML::Simple; my $data = $xml->XMLin($file, ForceArray=>['xs:element']); open FH,">file.out"; print FH Dumper($data); foreach my $complex(keys %{$data->{'xs:complexType'}}) { my $seq = $data->{'xs:complexType'}->{$complex}->{'xs:sequence'}; my $elementref; if (exists($seq->{'xs:element'}->{'xs:choice'})){ $elementref = $seq->{'xs:element'}->{'xs:choice'};} elsif (exists($seq->{'xs:choice'}->{'xs:element'})){ $elementref = $seq->{'xs:choice'}->{'xs:element'};} if (exists($seq->{'xs:element'})){ $elementref = $seq->{'xs:element'}; } elsif (exists($seq->{'xs:choice'})){ $elementref = $seq->{'xs:choice'};} else { die "unknown data structure at $complex->xs:sequence\n";} foreach my $element (keys %$elementref){ print "$complex.$element\n"; } } #### ####