使用XML :: Twig更改XML属性值
问题描述:
我想使用XML::Twig
更改XML属性值。我可以用XML::LibXML
这样使用XML :: Twig更改XML属性值
my $doc = XML::LibXML->new->parsefile();
my $xpath = '/model/@name';
my ($attr) = $doc->findnodes($xpath);
$attr->setValue('dfdsa');
做到这一点,但我不得不使用XML::Twig
因为一些限制
输入
<model name="XXXX" oid="i">
<system oid="1" uri="/gaia" listing="NO">
<schema desc="HTTP Sever schema" enab="YES" name="HTTP" oid="1" prio="5">
</schema>
</system>
</model>
输出
<model name="dfdsa" oid="i">
<system oid="1" uri="/gaia" listing="NO">
<schema desc="HTTP Sever schema" enab="YES" name="HTTP" oid="1" prio="5">
</schema>
</system>
</model>
我想这个代码,但它不修改,我很失望,你似乎都做了几乎没有来尝试自行解决这一问题的内容
my $doc = XML::Twig->new->parsefile('pattern.xml');
my $xpath = '/model';
my ($attr) = $doc->findnodes($xpath);
$attr->set_att(name => 'dfdsa');
答
。即使您的问题中的XML格式错误,我也必须修复它。
这个程序会做你想要
use strict;
use warnings;
use XML::Twig;
my $twig = XML::Twig->new;
$twig->parsefile('pattern.xml');
my ($model) = $twig->findnodes('/model[@name]');
$model->set_att(name => 'dfdsa');
$twig->print(pretty_print => 'indented');
输出
<model name="dfdsa" oid="i">
<system listing="NO" oid="1" uri="/gaia">
<schema desc="HTTP Sever schema" enab="YES" name="HTTP" oid="1" prio="5"></schema>
</system>
</model>
那你试试呢?设置属性的值是用$ elt-> set_att(name =>'dfdsa')完成的' – mirod 2012-08-13 06:05:41
Hello Minard, 我在下面试过,但是它没有修改内容:( my $ doc = XML :: Twig-我的$($ attr)= $ doc-> findnodes($ xpath); $ attr-> set_att(name ='xpath'); new-> parsefile('pattern.xml'); \t my $ xpath ='/ model'; my >'dfdsa'); – user1575765 2012-08-13 06:37:31
即使我尝试下面的Bud没有工作 XML :: Twig-> new(twig_handlers => {'model'=> sub {$ _-> set_att(name =>'dfdsa')) }} \t, - > parsefile('pattern.xml'); – user1575765 2012-08-13 07:05:39