用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 的 SetWindow.pm XML::XPath
,则无法识别此对象。是否有任何可能的方法将XML::Twig
对象转换为XML::XPath
对象,以便XML::XPath
解析$twig
对象中的值。
实际上我已经使用XML::XPath
很久了,因此我必须XML::XPath
像 SetWindow.pm 一样将对象发送到我自己的所有 *.pm,同时我需要在发送到我自己的 PM 之前更改标准 xml 的属性值。
提前致谢。
任何帮助深表感谢!
rndpilot