绕过ElementTree

时间:2010-06-11 12:37:53

标签: python lxml

在我的程序中,我需要在程序中的各种函数中使用ElementTree对象。

更具体地说,我这样做:

tree = etree.parse('somefile.xml')

我正在程序中传递这棵树。

我想知道这是一个好方法,还是我可以这样做:

  1. 创建一个全局树(我来自一个 C ++背景,我知道全局 坏)
  2. 在需要的地方再次创建树。
  3. 或者我的方法好吗?

3 个答案:

答案 0 :(得分:1)

通常我所做的是使用ElementTree解析树,然后将整个混乱转换为对象列表并将其传递 - 之后更容易处理,因为其余代码不必知道这些东西起源于一些上帝可怕的xml文件。

答案 1 :(得分:1)

在Python中,(消除复杂性,对C ++背景进行类比)所有对象都通过引用传递。由于“树”是一个对象,你只是传递了引用。现在,如果您有一组在同一个树上运行的相关方法,您可能需要考虑创建一个以该树对象作为成员的类。

此外,这里有一个我上面掩盖的复杂性的快速参考:http://www.testingreflections.com/node/view/5126

答案 2 :(得分:0)

传递它肯定比每次想要使用它时重新创建它更好。解析文件是一项昂贵的操作。 Here are some suggestions for performance improvements with lxml.