2016-08-19 55 views
1

我有一個列表的列表爲這樣:元組的列表保存在XML

[[value A, Value B, Value C], [value D, value E, Value F]] 

我有XML結構如下:

<root> 
    <data> 
    </data> 
</root> 

我想了解的最佳途徑將列表寫入XML。

我明白如何解析XML,如何獲取數據,以及如何將數據寫入XML,在我的具體情況下使用etree。我正在努力的是將這種數據類型存儲在XML中的概念性最佳做法。

我對這個問題的性質問題表示歉意,但我在這裏苦於基本面。

我已經嘗試將整個列表保存爲一個字符串,這樣可以很好地保存 - 但稍後處理會很麻煩。

更新:

使用@mkHun的一般方法,用@喬恩克萊門茨屬性的概念,我的目的了以下工作:

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

@JonClements屬性是肯定,我需要去嘗試這個概念。謝謝您的幫助。 – theeastcoastwest

回答

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 
+0

這個一般的概念運作良好,雖然你可以在我的問題的更新中看到,我稍微改變了方法,以避免分開列表成員。謝謝 – theeastcoastwest