2010-10-21 46 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