Я давно использую XML::XPath
для разбора xml, теперь ситуация изменила значение атрибута.
xml доступен в файле, он будет очень похож на этот.
<AppName>
<Action AllDay='1'StartRace='1'/>
<StartPoint AM_PM='AM' Hours='09' Mins='30'/>
<EndPoint AM_PM='PM' Hours='06' Mins='30'/>
</AppName>
Я написал Perl-скрипт для изменения тега Hours of StartPoint,
use strict;
use warnings;
use XML::Twig;
my $fileName = 'Conf.xml';
my $twig = XML::Twig->new(
twig_roots => { StartPoint => \&ReplaceAtriValue },
twig_print_outside_roots => 1, );
sub ReplaceAtriValue {
my ($twig, $startPoint) = @_;
if ( '09' eq $startPoint->att('Hours') )
{
$startPoint->set_att( Hours => '12');
}
$startPoint->print(); }
$twig->parsefile($fileName);
У меня есть некоторые, как успешно заменил 09 на 12, теперь $twig
имеет объект xml.Если я отправляю этот объект ($twig
) в мой SetWindow.pm, который анализирует xml, используя XML::XPath
, не распознал этот объект.Есть ли какой-нибудь возможный способ преобразовать XML::Twig
объект в XML::XPath
объект, чтобы XML::XPath
проанализировал значения в $twig
объекте.
На самом деле я использовал XML::XPath
для долгого возврата, следовательно, у меня естьчтобы отправить XML::XPath
объект всем моим * .pm, таким как SetWindow.pm, в то же время мне нужно изменить значения атрибута стандартного xml перед отправкой моим собственным PM.
СпасибоЗаранее.
Любая помощь очень ценится!
rndpilot