-2

我想使用XML::Twig. 我可以通过这样使用来做到这XML::LibXML一点

       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');
4

1 回答 1

1

我很失望你似乎几乎没有做任何事情来尝试自己解决这个问题。即使您问题中的 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>
于 2012-08-13T07:07:21.283 回答