5

我需要使用 lxml 和 Python 编写 XML 文件。

但是,我不知道是使用 aclass来执行此操作还是使用函数。关键是,这是我第一次开发合适的软件并决定在哪里以及为什么使用class仍然看起来很神秘。

我将说明我的观点。

例如,考虑以下我为将子元素添加到 etree 根而编写的基于函数的代码。

from lxml import etree

root = etree.Element('document')

def createSubElement(text, tagText = ""):
    etree.SubElement(root, text)
    # How do I do this: element.text = tagText

createSubElement('firstChild')
createSubElement('SecondChild')

正如预期的那样,它的输出是:

<document>
  <firstChild/>
  <SecondChild/>
</document>

但是,您可以注意到评论,我不知道如何使用这种方法设置文本变量。

是使用class唯一的方法来解决这个问题吗?如果是的话,你能给我一些关于如何实现这一目标的指示吗?

4

1 回答 1

3

以下代码有效:

def createSubElement(text, tagText = ""):
    elem = etree.SubElement(root, text)
    elem.text = tagText

createSubElement('firstChild', 'first one')
createSubElement('SecondChild', 'second one')

print etree.tostring(root)

使用类而不是函数主要与在类的实例中保持状态有关(在极少数用例中,如果不需要保持状态,类将有意义),这与您的问题无关 - 因为代码显示,您的问题只是您没有将任何名称绑定到SubElement调用返回的元素,因此您当然无法text在函数的其余部分中进一步操作该元素(例如通过设置其属性)。

于 2010-05-23T17:16:33.813 回答