XML Twig:更新单个条目

时间:2018-10-01 15:07:14

标签: xml perl

我有一个XML文件,其中包含大量具有不同属性的相同标签。我只需要查找包含指定属性的标签之一,并更新关联的值,然后保存信息,以使包含该信息的新文件与原始文件相同,只是更新标签值。我正在使用XML Twig,并且想知道最快的方法。我已经看过finish和finish_print方法,但是无法使它们工作。我认为这些方法与twig_handlers相关,这是我当前使用的方法。但是,在处理此类问题时,加载整个文档可能会更快。可以根据需要将文件加载到内存中,因为它们不会太大。目前,我唯一真正关心的是执行操作所花费的时间。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

时间纯粹是序列化XML的功能。

IMO twig_handlers主要用于大型XML的增量解析,并可能用于就地编辑。如果您的XML不大,那么前进就是将其加载到内存中,这样就不会造成混乱。

关于查找和替换-xpath是工作的工具。

例如如果您想找到:

<element name="fish">
  <value>42</value>
</element>

然后您可以通过以下方式在XML中找到它:

foreach my $elt ( $xml -> get_xpath('//element[@name="fish"]') ) { 
  $elt -> print; 
}

然后您可以根据自己的喜好修改它,而不仅仅是打印它,然后只需将整个XML文档打印到一个新文件即可。

如果您的可用内存大于文档大小的10倍,则必须将其加载到内存中。