我有一份清单如下:
[[value A, Value B, Value C], [value D, value E, Value F]]
我的XML结构如下:
<root>
<data>
</data>
</root>
我试图了解将列表写入XML的最佳方法。
我理解如何解析XML,如何获取数据,以及如何使用etree在我的特定情况下将数据写入XML。我所挣扎的是将这种数据类型存储在XML中的概念性最佳实践。
我为这个问题的特殊性而道歉,但我在这里与基本面斗争。
我已经尝试将整个列表保存为一个字符串,这可以节省很多 - 但是后来处理它会很麻烦。
更新:
使用@mkHun的一般方法,使用@Jon Clements属性概念,以下内容适用于我的目的:
from lxml import etree
var = [["value A", "Value B", "Value C"], ["value D", "value E", "Value F"]]
for j in var:
root = etree.Element('root')
member = etree.SubElement(root, "member")
member.attrib['att1'] = j[0]
member.attrib['att2'] = j[1]
member.attrib['att3'] = j[2]
root.append(member)
out = etree.tostring(root, pretty_print=True)
print(out)
这种方法减少了将每个列表合并为单个SubElement
的迭代深度,创建了类似于以下内容的XML结构:
<root>
<member att1="Value A" att2="Value B" att3="Value C"/"
<member att1="Value D" att2="Value E" att3="Value F"/"
</root>
我不确定这是存储这些数据的最佳或最有效的方式,但是现在它是我尝试过的最好的方法。
由于
答案 0 :(得分:1)
使用lxml
from lxml import etree
var = [["value A", "Value B", "Value C"], ["value D", "value E", "Value F"]]
for j in var:
root = etree.Element('root')
for m in j:
data = etree.Element('data')
data.text = m
root.append(data)
out = etree.tostring(root, pretty_print=True)
print out