【问题标题】:XML Twig: update single entryXML Twig:更新单个条目
【发布时间】:2018-10-01 23:40:34
【问题描述】:

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

非常感谢任何帮助。

【问题讨论】:

  • 我们真的可以使用您的 XML 或代码的一些示例来给出一个体面的答案。

标签: xml perl


【解决方案1】:

时间将纯粹是序列化 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 倍,则可以将其加载到内存中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    相关资源
    最近更新 更多