Я использую XML::Simple
и XML::Dumper
. Я хорошо знаю проблемы, связанные с прежним модулем. Если бы я мог использовать альтернативную библиотеку, я бы это сделал.Анализ данных XML и добавление нового элемента с использованием XML :: Simple
Что я хочу достичь, это загрузить XML, а затем добавить строки к нему. Это моя структура XML до запуска скрипта.
<person>
<appearance>
<param name="height" value="6,3"/>
</appearence>
</person>
сценарий, или то, что я намеревался кода, необходимо загрузить этот XML из файла, а затем присоединять <param>
элемент на <appearence>
. Я попытался его с помощью этого кода:
use warnings;
use XML::Simple;
use XML::Dumper;
my $xml = XMLin('xml_import.xml');
$xml->{appearence} .= qq{<param name="age" value="22" />};
my $new_xml = XMLout($xml, noattr => 1, NoEscape => 1);
open(FILE, ">xml_import.xml");
print FILE $new_xml;
close FILE;
К сожалению, выход на это:
<opt>
<appearence>HASH(0x1722190)<param name="age" value="22" /></appearence>
</opt>
Я не только потерять свои оригинальные <person>
теги к <opt>
но HASH
строка заменяет то, что я полагаю, что было существующий элемент <param>
. Я прочитал документацию для XML::Simple
, но я не могу определить, какие аргументы следует использовать для предотвращения этого.
Я не могу придумать причину, почему лучше модули XML могли быть недоступны для вас, если кто-то держит вашу семью в заложники. Вы хотите объяснить проблему? – Borodin
Не особенно. Существует много причин, по которым альтернативные библиотеки недоступны в этой проблеме. С каких пор был stackoverflow сайт для опроса? –
Примечание. Хотя XML :: Simple довольно плохо для синтаксического анализа XML, для написания XML это ужасно ужасно. Он будет генерировать XML, который отличается от XML, который вы читаете. Избегайте этого устаревшего модуля. – ikegami