保存XML中的元组列表

时间:2016-08-19 00:52:29

标签: python xml list nested-lists

我有一份清单如下:

[[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>

我不确定这是存储这些数据的最佳或最有效的方式,但是现在它是我尝试过的最好的方法。

由于

1 个答案:

答案 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