在 XML 中保存元组列表
Saving List of Tuples in XML
我有一个这样的列表列表:
[[value A, Value B, Value C], [value D, value E, Value F]]
我得到 XML 结构如下:
<root>
<data>
</data>
</root>
我正在尝试了解将列表写入 XML 的最佳方式。
我了解如何解析 XML、如何获取数据以及如何将数据写入 XML,在我的特定情况下使用 etree。我正在努力解决的是将这种数据类型存储在 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>
我不确定这是存储这些数据的最佳或最有效的方式,但目前这是我尝试过的最佳方法。
谢谢
使用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
我有一个这样的列表列表:
[[value A, Value B, Value C], [value D, value E, Value F]]
我得到 XML 结构如下:
<root>
<data>
</data>
</root>
我正在尝试了解将列表写入 XML 的最佳方式。
我了解如何解析 XML、如何获取数据以及如何将数据写入 XML,在我的特定情况下使用 etree。我正在努力解决的是将这种数据类型存储在 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>
我不确定这是存储这些数据的最佳或最有效的方式,但目前这是我尝试过的最佳方法。
谢谢
使用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