有没有办法修改/更新xml文件,而不是完全写入旧文件?

时间:2012-05-13 09:19:12

标签: python xml lxml

我正在编写一个脚本,它涉及以多线程方式不断分析数据和输出结果。所以基本上结果文件(xml文件)不断被更新/修改(有时2-3次/秒)。

我目前正在使用lxml来解析/修改/更新xml文件,现在工作正常。但是从我所知道的,你必须重写整个xml文件,即使有时你只需在文件中的某处添加一个条目/子条目,如<weather content=sunny />。 xml文件逐渐变大,开销也是如此。

就效率/资源而言,还有其他任何更新/修改xml文件的方法吗?或者当xml文件太大而无法解析/修改/更新时,您将不得不切换到SQL数据库或类似的东西?

2 个答案:

答案 0 :(得分:2)

不,你通常不能 - 而不仅仅是XML文件,任何文件格式。

如果你完全覆盖字节,你只能更新“就地”(即不添加或删除任何字符,只需用相同的字节长度替换一些字符)。

使用数据库形式听起来是个不错的选择。

答案 1 :(得分:0)

肯定听起来你需要某种数据库,因为 Li-anung Yip 表明这会解决各种令人讨厌的多线程同步问题。

您说您的数据正在逐渐增加?它是如何被消费的?客户端每次都被迫下载整个结果文件吗?

不知道您的用例,但也许您可以考虑使用ATOM feed来分发您的数据更改?为Atom pub提供支持也可以有效地REST启用您的数据。它仍然是XML,但是采用标准的兼容格式,易于使用和轮询更改。