在python3中使用多个函数编写xml元素
我需要在一个xml文件中写入一组元素,每两个元素都应该是空的,所以为了使代码更紧凑,我想我应该创建一个函数来写出空元素。当然,我不能生成这样的代码:在python3中使用多个函数编写xml元素,python,xml,python-3.x,function,Python,Xml,Python 3.x,Function,我需要在一个xml文件中写入一组元素,每两个元素都应该是空的,所以为了使代码更紧凑,我想我应该创建一个函数来写出空元素。当然,我不能生成这样的代码: def makeOne(): table=etree.SubElement(tables,'table') values = etree.SubElement(table,'values') 稍后在实际输入值的函数中调用它,因为我收集的文件没有加载到该函数中。我可能错了。我没有做太多Python,所以我不知道是否有更优雅的方法来处理这
def makeOne():
table=etree.SubElement(tables,'table')
values = etree.SubElement(table,'values')
稍后在实际输入值的函数中调用它,因为我收集的文件没有加载到该函数中。我可能错了。我没有做太多Python,所以我不知道是否有更优雅的方法来处理这个问题。为了清楚起见,这就是我的想法
def writeVals():
tree = etree.parse('singleprog')
root = tree.getroot()
tables = etree.SubElement(korjen[0], 'tables')
makeOne()
我知道我想看到这里发生的事情很清楚,问题是我不能把这两个子元素放在writeVals()函数中,因为我需要在随机的地方使用这段代码大约30次。这并不是真正的答案,但你也可以使用library,这是一种很棒的工厂方法:
from lxml import etree
from lxml.builder import E
table = E.table(E.values)
etree.dump(table)
您将获得:
<table>
<values/>
</table>
您将获得:
<table>
<values>one</values>
<values>two</values>
<values>there</values>
</table>
一
二
那里
lxml简介:
lxml工具包是C库libxml2和libxslt的Python绑定。它的独特之处在于它将这些库的速度和XML功能完整性与本机Python API的简单性结合在一起,本机Python API主要兼容,但优于著名的ElementTreeAPI。最新版本适用于从2.6到3.6的所有CPython版本。有关lxml项目的背景和目标的更多信息,请参见简介。常见问题解答中回答了一些常见问题
你能把
表格
作为参数传递给makeOne
吗?天哪,是的。谢谢你,汤姆!真傻,我有时怎么也看不见东西makeOne(tables)
工作起来很有魅力。出于某种原因,我告诉自己我不使用lxml就可以做到这一点,但我必须考虑实现它。它可以与ElementTree互换使用吗?此外,我意识到我的问题更多的是使用函数而不是ET。参见lxml简介:
<table>
<values>one</values>
<values>two</values>
<values>there</values>
</table>