我有一个应用程序,它不断从文件中重新加载大量XML数据,然后执行操作,然后写回文件。
证明lxml库对于解析和解析XML非常快,但cElementTree对于某些类型的操作要快得多。两者都有一个几乎相同的API。
如何使用lxml解析XML文件,然后使用cElementTree对其进行操作?
这是我尝试过的,但lxml解析方法生成的对象本身就使用了它自己的操作方法。
import xml.etree.cElementTree as ET
from lxml import etree as lxmlET
答案 0 :(得分:2)
这个问题可能与Python相当于"我的朋友有一辆快车,我只是一个笨蛋。怎样才能让我的车跟她一样快?"
我并不是说这无法做到,但我应该打电话给这样一个企业要么雄心勃勃,要么蛮干,这取决于你的编程技巧水平。关键是,正如您所发现的,每个系统都有自己内部表示的已解析XML。
虽然有可能编写代码来获取由lxml生成的解析对象并重新创建或将其包装为ElementTree元素,但它可能会a)在第一次使用ElementTree解析时地方,和b)维持噩梦。
所以请帮助自己,选择一种技术,然后坚持下去(至少对每个项目而言)。
我还要指出,XML主要用作数据交换语言。您似乎将其用作结构化数据存储库的事实不可避免地在处理中引入了大量低效率,尤其是在数据量增加时。可能最好选择一些更适合的表示,然后只将其转换为XML以供其他系统输出和使用?