在python3中使用多个函数编写xml元素

时间:2017-05-01 12:43:49

标签: python xml python-3.x function

我需要在xml文件中编写一堆元素,并且每个元素都应该为空,所以为了使代码更紧凑,我想我会创建一个写出空元素的函数。当然我不能制作看起来像这样的代码:

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次。

1 个答案:

答案 0 :(得分:1)

这不是真正回答这个问题,但是你可以使用lxml库,这是一个很棒的E工厂方法:

from lxml import etree
from lxml.builder import E

table = E.table(E.values)

etree.dump(table)

你会得到:

<table>
  <values/>
</table>

更进一步:

table = E.table(
    E.values("one"),
    E.values("two"),
    E.values("there"),
)

etree.dump(table)

你会得到:

<table>
  <values>one</values>
  <values>two</values>
  <values>there</values>
</table>

lxml简介:

  

lxml XML工具包是C库 libxml2 libxslt 的Pythonic绑定。它的独特之处在于它将这些库的速度和XML特性完整性与原生Python API的简单性相结合,大多数兼容但优于众所周知的 ElementTree API。最新版本适用于2.6到3.6的所有CPython版本。有关lxml项目的背景和目标的更多信息,请参阅简介。常见问题解答中回答了一些常见问题。