2010-10-21 16 views
3

如何使用minidom從非字符串數據類型生成xml?我有一種感覺會有人告訴我要先手動生成字符串,但這不是我所追求的。如何使用minidom從非字符串數據類型生成xml?

from datetime import datetime 
from xml.dom.minidom import Document 

num = "1109" 
bool = "false" 
time = "2010-06-24T14:44:46.000" 

doc = Document() 

Submission = doc.createElement("Submission") 
Submission.setAttribute("bool",bool) 
doc.appendChild(Submission) 

Schedule = doc.createElement("Schedule") 
Schedule.setAttribute("id",num) 
Schedule.setAttribute("time",time) 
Submission.appendChild(Schedule) 

print doc.toprettyxml(indent=" ",encoding="UTF-8") 

這是結果:

<?xml version="1.0" encoding="UTF-8"?> 
<Submission bool="false"> 
    <Schedule id="1109" time="2010-06-24T14:44:46.000"/> 
</Submission> 

如何獲得非字符串數據類型的有效XML表示?

from datetime import datetime 
from xml.dom.minidom import Document 

num = 1109 
bool = False 
time = datetime.now() 

doc = Document() 

Submission = doc.createElement("Submission") 
Submission.setAttribute("bool",bool) 
doc.appendChild(Submission) 

Schedule = doc.createElement("Schedule") 
Schedule.setAttribute("id",num) 
Schedule.setAttribute("time",time) 
Submission.appendChild(Schedule) 

print doc.toprettyxml(indent=" ",encoding="UTF-8") 

文件 「C:\ Python25 \ lib中\ XML \ DOM \ minidom.py」,線路299,在_write_data 數據= data.replace( 「&」,「& 」).replace(「 < 「,」<「) AttributeError:'bool'對象沒有屬性'替換'

回答

3

綁定方法setAttribute預計其第二個參數值爲字符串。您可以通過將數據轉換爲字符串幫助處理一起:

bool = str(False) 

,或者轉換爲字符串,當你調用setAttribute

Submission.setAttribute("bool",str(bool)) 

(當然,同樣必須爲num完成, time)。

+0

時間字符串很難正確生成,這將是一個脆弱的方法。必須有一種方法可以從數據庫查詢中獲取結果集,將這些值插入到dom節點中並使其正確序列化,而無需爲所有內容顯式創建字符串。 – tponthieux 2010-10-21 03:20:32

相關問題