使用XML :: TWIG,如何仅在一个元素中删除属性

时间:2014-03-21 22:03:17

标签: xml xml-twig

我有一个看起来像这样的xml:

<first id="1">
 <second id="1">test</second>
 <second>
  <third id="4">test</third>
 </second>
 <second id="3">test</second>
</first>

我想删除“id”属性,但仅限于“first”元素。使用XML :: TWIG,我这样做了:

$twig->parsefile('test.xml');
my ($model) = $twig->first_elt('first[@id]');
$model->strip_att('id');

问题是,它删除了所有元素中的“id”属性,而不仅仅是“first”,因此最终文件如下所示:

<first>
 <second>test</second>
 <second>
  <third>test</third>
 </second>
 <second>test</second>
</first>

而不是:

<first>
 <second id="1">test</second>
 <second>
  <third id="4">test</third>
 </second>
 <second id="3">test</second>
</first>

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我认为你必须使用del_att($ att)而不是strip_att($ att),在文档中你可以看到这个解释:

strip_att ($att) : 

从元素(包括元素)的所有后代中删除属性$ att

del_att ($att): 

删除元素的属性。

所以在你的代码中:

$twig->parsefile('test.xml');
my ($model) = $twig->first_elt('first[@id]');
$model->del_att('id');

希望这有帮助