1

私は XML::Simple を使用しており、変数 $xmldata に次の XML 構造があり、Perl コードからアクセスする必要があります。

<root>
    <a>sfghs</a>
    <b>agaga</b>
    <c>
       <c1>sgsfs</c1>
       <c2>sgsrsh</c2>
    </c>
    <d>
        <d1>agaga</d1>
        <d2>asgsg</d2>
    </d>
</root>

次のコードを使用して、a と b の値にアクセスできます。

$aval = $xmldata->{a}[0];
$bval = $xmldata->{b}[0] ;

さて、私の質問は、たとえば d2 の値を取得するにはどうすればよいですか?

4

1 に答える 1

5

上記の内容を考えると、ForceArrayフラグが有効になっていると思います。ネストされたキーは、参照を使用してハッシュのハッシュとして保存されます。

したがって、「d2」にアクセスするには、次を使用する必要があります。

my $d2val = $xmldata->{d}[0]->{d2}[0];

(または私の好み)

my $d2val = $xmldata->{d}->[0]->{d2}->[0];

(それはderefを明白にするので)

明らかに、あなたが深く行くほど、これはより恐ろしくなります。これが、私がほとんどの場合、XML::SimpleではなくXML::LibXMLとXPathを提案する理由の1つです。XML::Simpleは急速に単純ではなくなります。XML :: Simpleドキュメントは、さまざまなオプションがこのレイアウトにどのように影響するかを説明しています。

Data :: Dumperは、データがどのように配置されているかを確認する場合に非常に役立ちます。

于 2009-06-22T12:30:07.930 に答える