У меня есть простой XML-код, подобный этому.
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<TCXML format="low_level" authKey="12345">
<Dataset acl_bits="0" creation_date="2019-04-03T13:42:47Z" dataset_type="#id6" island_id="4" elemId="id2478" last_mod_date="2019-04-03T13:49:31Z" />
<Dataset acl_bits="0" creation_date="2019-04-03T13:42:47Z" dataset_type="#id61" island_id="41" elemId="id2479" format_used="ASCII" last_mod_date="2019-04-03T13:49:31Z" />
</TCXML>
Я использую Perl, чтобы изменить last_mod_date и восстановить файл xml.
Когда я пробую этот Perl-код, я получаю следующую ошибку.
use strict;
use warnings;
use Data::Dump qw(dump);
use XML::LibXML;
use XML::LibXML::NodeList;
use XML::Simple;
use Data::Dumper;
print "Perl Starting ... \n\n";
open my $xmlfilename, '<', 'test100.xml' or die "No input Filename Found ... \n";
my $dom = XML::LibXML->load_xml(IO => $xmlfilename);
print "Looping Dataset ... \n\n";
foreach my $xmlNode ($dom->findnodes('//Dataset'))
{
my $last_mod_date = $xmlNode->find('./@last_mod_date');
print "last_mod_date: $last_mod_date ... \n";
#change dates
$last_mod_date->setData("2019-04-11");
#save xml file - can this be done at the very end?
$dom->toFile('test100.xml');
}
print "\nPerl End ... \n\n";
output:
Perl Starting ...
Looping Dataset ...
last_mod_date: 2019-04-03T13:49:31Z ...
Can't locate object method "setData" via package "XML::LibXML::NodeList" at test100.pl line 26.
Я искал переполнение стека и Google.Я внимательно прочитал этот пост , но я все еще застрял.Что я делаю не так?