我需要使用 lxml 和 Python 编写 XML 文件。
但是,我无法确定是使用类
还是函数来执行此操作。重点是,这是我第一次开发合适的软件,决定在何处以及为何使用 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
是解决这个问题的唯一方法吗?如果是的话,你能给我一些关于如何实现这一点的指导吗?
最佳答案
以下代码有效:
def createSubElement(text, tagText = ""):
elem = etree.SubElement(root, text)
elem.text = tagText
createSubElement('firstChild', 'first one')
createSubElement('SecondChild', 'second one')
print etree.tostring(root)
使用类而不是函数主要是为了在类的实例中保持状态(在极少数用例中,如果不需要状态保持,类就有意义),它具有与您的问题无关 - 如代码所示,您的问题只是您没有将任何名称绑定(bind)到 SubElement
调用返回的元素,因此您当然无法进一步操作该元素(例如,通过设置其 text
属性)在您的函数的其余部分。
关于python - 对使用类或函数感到困惑 : Writing XML files using lxml and Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2892528/