在我的程序中,我需要在程序中的各种函数中使用ElementTree对象。绕过ElementTree
更具体地说,我做这个:
tree = etree.parse('somefile.xml')
我身边路过此树在我的计划。
我想知道这是否是一个好方法,或者我可以这样做:
- 创建一个全局树(我来自一个 C++背景,我知道全球是 坏)
- 创建在需要的地方再次树。
或者我的方法好吗?
在我的程序中,我需要在程序中的各种函数中使用ElementTree对象。绕过ElementTree
更具体地说,我做这个:
tree = etree.parse('somefile.xml')
我身边路过此树在我的计划。
我想知道这是否是一个好方法,或者我可以这样做:
或者我的方法好吗?
在Python中,(消除复杂性,为您的C++背景打个比方),所有对象都通过引用传递。由于“树”是一个对象,所以你只传递参考。现在,如果您有一组相关的方法在同一棵树上操作,您可能需要考虑创建一个具有该树对象作为成员的类。
而且,这里有一个快速参考我掩盖了上述复杂性:http://www.testingreflections.com/node/view/5126
传递它肯定比每次要使用它都要重新创建它更好。解析文件是一项昂贵的操作。 Here are some suggestions for performance improvements with lxml.
通常我所做的就是使用ElementTree解析树,然后将整个混乱转换为对象列表并将其传递给对象 - 事后处理更容易,因为其余代码不必意识到这些东西起源于一些可怕的xml文件。
感谢。 – user225312 2010-06-11 14:06:18
不客气! – gomad 2010-06-14 15:33:49