1

私はperlを初めて使用し、XML :: Simpleを使用してXMLをロードし、タグ名をハッシュ名として使用するという問題があります。「xsd:schema」という名前で保存されているハッシュを取得したいのですが、明らかに$ xsd:schemaが機能しません。私はそれをグーグルで検索するのに何年も費やしました、そしてそれをする方法を見つけることができません。

キー値を見つけることができるように、そのハッシュを取得するにはどうすればよいですか?

編集:

申し訳ありませんが、私は自分自身をうまく説明できませんでした。数レベルの深さのハッシュでキーとそれらのキーの値を調べたいのですが、xsd:schemaという名前が構文エラーを引き起こしています:

foreach my $attributes (keys %{ $data{$xsd:schema}{$xsd:element}}){
    print "$attributes : ${$data}{$xsd:schema}{$xsd:element}{$attributes}\n";
}

編集2:これが私がそれをした方法です。

$schemaData = $data->{'xsd:schema'}->{'xsd:element'}->{'xsd:complexType'}->{'xsd:sequence'}->{'xsd:element'}->{'xsd:complexType'}->{'xsd:sequence'}->{'xsd:element'};

print Dumper($schemaData);

foreach my $fieldName (keys %{ $schemaData}){

    $fieldType =  $schemaData->{$fieldName}->{'type'};
    print "$fieldType\n";
}
4

1 に答える 1

10

Data :: Dumperを使用して、複雑なデータ構造を視覚化します。

XML :: Simpleは新しい変数を作成せず、参照を作成します。Perlデータ構造クックブックを参照してください。

use Data::Dumper;
use XML::Simple;

my $x = XMLin(q(<r xmlns:xsd="xsd"><xsd:schema atr="a">a</xsd:schema></r>));
print Dumper $x;
print $x->{'xsd:schema'}{content};

出力:

$VAR1 = {
          'xsd:schema' => {
                          'content' => 'a',
                          'atr' => 'a'
                        },
          'xmlns:xsd' => 'xsd'
        };
a
于 2012-11-02T12:44:14.197 に答える