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