我需要使用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唯一的方法解决这个问题?如果是的话,你能给我一些关于如何实现这一目标的指示吗?
以下代码有效:
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在函数的其余部分中进一步操作该元素(例如通过设置其属性)。