Нежелательные различия при разборе XML с помощью Perl - PullRequest
2 голосов
/ 01 августа 2011

Я хочу разобрать файл XML, состоящий, среди прочего:

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

Итак, когда я анализирую это с XML :: Simple :

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

Я понимаю, что, хотя $data->{t}->{object}->{t1}->{a}->{content} является ожидаемым "A", я не могу получить "C" с $data->{t}->{object}->{t2}->{c}->{content}, потому что существует только один экземпляр "t2".

В моем сценарии я не хочу иметь различий между этими двумя случаями - я хочу получить «C» точно так же, как я получил «A».

Как это можно сделать? Я попытался найти ответ, но мне удалось установить ForceArray на 1, но это не решило проблему.

Спасибо!

1 Ответ

3 голосов
/ 01 августа 2011

Попытайтесь точно определить forcearray, как это:

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

Я считаю, что это должно работать. Если вы боитесь, что могут быть экземпляры t, которые также имеют только один экземпляр t1, измените его на ['t1', 't2'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...