【发布时间】:2011-12-10 16:03:51
【问题描述】:
我用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 脚本来更改起始点标记的时间,
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) 发送到使用XML::XPath 解析 xml 的 SetWindow.pm,则无法识别此对象。是否有任何可能的方法将XML::Twig 对象转换为XML::XPath 对象,以便XML::XPath 将解析$twig 对象中的值。
实际上我已经使用XML::XPath 很久了,因此我必须将XML::XPath 对象发送到我自己的所有*.pm,比如SetWindow.pm,同时我需要更改属性的值发送给我自己的 PM 之前的标准 xml。
提前致谢。
非常感谢任何帮助!
rndpilot
【问题讨论】: