2 Stimmen

Unerwünschte Unterschiede beim Parsen von XML mit Perl

Ich möchte eine XML-Datei parsen, die unter anderem aus folgenden Elementen besteht:

<xml>
<t>
    <name>object</name>
    <t1 name="a">A</t1>
    <t1 name="b">B</t1>
    <t2 name="c">C</t2>
</t>
...
</xml>

Wenn ich es also analysiere mit XML::Einfach :

my $xml = new XML::Simple;
my $data = $xml->XMLin("data.xml");

Ich verstehe das, während $data->{t}->{object}->{t1}->{a}->{content} ist erwartungsgemäß "A", das "C" bekomme ich nicht mit $data->{t}->{object}->{t2}->{c}->{content} weil es nur eine Instanz von "t2" gibt.

In meinem Skript möchte ich keine Unterschiede zwischen diesen beiden Fällen haben - ich möchte "C" genau so bekommen wie "A".

Wie kann man das tun? Ich habe versucht, für die Antwort zu suchen, aber ich habe nur zu Einstellung ForceArray auf 1, aber das hat das Problem nicht gelöst.

Gracias.

3voto

ronash Punkte 836

Versuchen Sie, das Forcearray genau zu definieren, etwa so:

my $data = $xml->XMLin("data.xml", forcearray=>['t2']);

Ich glaube, das sollte funktionieren. Wenn Sie befürchten, dass es Instanzen von t gibt, die auch nur eine Instanz von t1 haben, ändern Sie es in ['t1', 't2'] .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X