混淆使用类或函数:使用lxml和Python编写XML文件

use*_*312 5 python lxml

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

但是,我无法弄清楚是否使用a class来执行此操作或功能.关键是,这是我第一次开发一个合适的软件,并决定在哪里以及为什么使用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')
Run Code Online (Sandbox Code Playgroud)

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

<document>
  <firstChild/>
  <SecondChild/>
</document>
Run Code Online (Sandbox Code Playgroud)

但是,您可以注意到注释,我不知道如何使用此方法设置文本变量.

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

Ale*_*lli 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)
Run Code Online (Sandbox Code Playgroud)

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