from xml.etree.ElementTree import Element
def dict_to_xml(tag, d):
'''
Turn a simple dict of key/value pairs into XML
'''
elem = Element(tag)
for key, val in d.items():
child = Element(key)
child.text = str(val)
elem.append(child)
return elem
下面是一個(gè)使用例子:
>>> s = { 'name': 'GOOG', 'shares': 100, 'price':490.1 }
>>> e = dict_to_xml('stock', s)
>>> e
<Element 'stock' at 0x1004b64c8>
>>>
轉(zhuǎn)換結(jié)果是一個(gè) Element 實(shí)例。對(duì)于I/O操作,使用 xml.etree.ElementTree 中的 tostring()函數(shù)很容易就能將它轉(zhuǎn)換成一個(gè)字節(jié)字符串。例如:
>>> from xml.etree.ElementTree import tostring
>>> tostring(e)
b'<stock><price>490.1</price><shares>100</shares><name>GOOG</name></stock>'
>>>
def dict_to_xml_str(tag, d):
'''
Turn a simple dict of key/value pairs into XML
'''
parts = ['<{}>'.format(tag)]
for key, val in d.items():
parts.append('<{0}>{1}</{0}>'.format(key,val))
parts.append('</{}>'.format(tag))
return ''.join(parts)
除了能創(chuàng)建正確的輸出外,還有另外一個(gè)原因推薦你創(chuàng)建 Element 實(shí)例而不是字符串,那就是使用字符串組合構(gòu)造一個(gè)更大的文檔并不是那么容易。而 Element 實(shí)例可以不用考慮解析XML文本的情況下通過(guò)多種方式被處理。也就是說(shuō),你可以在一個(gè)高級(jí)數(shù)據(jù)結(jié)構(gòu)上完成你所有的操作,并在最后以字符串的形式將其輸出。
更多建議: