0

我有一个应用程序,它不断地从文件中重新加载大量 XML 数据,然后执行操作,然后写回文件。

事实证明,lxml 库解析和反解析 XML 的速度要快得多,但 cElementTree 对于某些类型的操作要快得多。两者都有几乎相同的 API。

如何使用 lxml 解析 XML 文件,然后使用 cElementTree 对其进行操作?

这是我尝试过的,但是由 lxml 解析方法生成的对象固有地使用它自己的操作方法。

import xml.etree.cElementTree as ET
from lxml import etree as lxmlET
4

1 回答 1

2

这个问题在 Python 中可能相当于“我的朋友有一辆快车,而我只有一辆旧车。我怎样才能让我的车开得和她的一样快?”

我并不是说这不能做到,但我应该将这样的企业称为雄心勃勃或鲁莽,这取决于您的编程技能水平。关键是,正如您所发现的,每个系统都有自己的已解析 XML 的内部表示。

虽然可以编写代码来获取由 lxml 生成的已解析对象并将其重新创建或包装为 ElementTree 元素,但它可能会 a) 首先使用 ElementTree 进行解析,并且 b) 是维护噩梦。

所以帮自己一个忙,选择一种技术,然后坚持使用它(至少对于每个单独的程序)。

我还要指出,XML 的主要目的是作为一种数据交换语言。您似乎将其用作结构化数据存储库这一事实不可避免地会导致处理效率低下,尤其是随着数据量的增加。选择一些更合适的表示然后只将其转换为 XML 以供其他系统输出和使用会更好吗?

于 2014-07-09T10:32:50.237 回答