我有一个看起来像这样的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>
有什么建议吗?
答案 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');
希望这有帮助