В настоящее время я пытаюсь написать функцию Perl, которая может записывать XML в файл. Рекомендуемый модуль: XML::Simple
. Я написал код ниже и вижу вывод XML, но не вижу того, что пытаюсь вывести. Я приложил свой код, результат и ожидаемый результат. Что я делаю не так?
#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple;
sub writexmlout {
my $hashref = {
'Contracts' => {
'ShortName' => '123231123'
},
'CallStates' => {
'CallStatesSPR' => {
'Name' => 'Acknowledged'
}
},
'ContractElements' => {
'ShortName' => 'test'
},
'Calls' => {
'CHD' => {
'FirstName' => 'Ron',
'LastName' => 'Rich',
'Tel' => '(123) 456-4567',
'Sign' => 'B2B',
'Email' => 'ron.rich@mavenir.com'
},
'SPCallID' => '12',
'Remarks' => 'Ticket successfully Ebonded',
'CustCallID' => '6199999'
}
};
# Create object
my $xml = new XML::Simple( NoAttr => 1,
SuppressEmpty => 1,
XMLDecl => 1 ,
RootName=>'CallData');
my $result = $xml->XMLout($hashref);
print $result;
}
writexmlout();
Неожиданные результаты
<?xml version='1.0' standalone='yes'?>
<CallData>
<CallStates>
<name>CallStatesSPR</name>
<Name>Acknowledged</Name>
</CallStates>
<Calls>
<CHD>
<Email>ron.rich@mavenir.com</Email>
<FirstName>Ron</FirstName>
<LastName>Rich</LastName>
<Sign>B2B</Sign>
<Tel>(123) 456-4567</Tel>
</CHD>
<CustCallID>6199999</CustCallID>
<Remarks>Ticket successfully Ebonded</Remarks>
<SPCallID>12</SPCallID>
</Calls>
<ContractElements>
<ShortName>test</ShortName>
</ContractElements>
<Contracts>
<ShortName>123231123</ShortName>
</Contracts>
</CallData>
Желаемые результаты
<?xml version='1.0' standalone='yes'?>
<CallData>
<CallStates>
<CallStatesSPR>
<Name>Acknowledged</Name>
</CallStatesSPR>
</CallStates>
<Calls>
<CHD>
<Email>ron.rich@mavenir.com</Email>
<FirstName>Ron</FirstName>
<LastName>Rich</LastName>
<Sign>B2B</Sign>
<Tel>(123) 456-4567</Tel>
</CHD>
<CustCallID>6199999</CustCallID>
<Remarks>Ticket successfully Ebonded</Remarks>
<SPCallID>12</SPCallID>
</Calls>
<ContractElements>
<ShortName>test</ShortName>
</ContractElements>
<Contracts>
<ShortName>123231123</ShortName>
</Contracts>
</CallData>
Почему это происходит? Почему появился тег «имя», которого я не ожидал?