在我的python代码中,我试图以XML格式显示输出。为此,我使用XMLwriter
。
但它显示错误:
Traceback (most recent call last):
File "C:\Users\Ponmani\Desktop\test.cgi", line 8, in <module>
from elementtree.SimpleXMLWriter import XMLWriter
ImportError: No module named elementtree.SimpleXMLWriter
导致错误的行是:
from elementtree.SimpleXMLWriter import XMLWriter
我的整个python代码是:
import os
import cgi
import MySQLdb
import cgitb
from xml.etree.ElementTree import ElementTree
from elementtree.SimpleXMLWriter import XMLWriter
import sys
import SecureDb
cgitb.enable()
print "Content-type: text/xml\n\n";
root=xml.start("root")
conn= MySQLdb.connect(host = SecureDb.host ,user =SecureDb.user ,passwd=SecureDb.password ,db=SecureDb.database)
cursor=conn.cursor()
xml=XMLWriter(sys.stdout)
cursor.execute("select * from register where Name='Subburaj'")
result=cursor.fetchall()
if(result!=()):
for colns in result:
xml.start("Group")
xml.element("Name","%s" %(colns[0]))
xml.element("Mail","%s" %(colns[1]))
print result
xml.end()
xml.close(root)
conn.commit()
cursor.close()
conn.close()
答案 0 :(得分:2)
Python 2.5及更高版本附带的ElementTree
模块不包含SimpleXMLWriter
模块;后者与ElementTree
功能的其余部分完全分开。
要生成XML,我个人使用Chameleon等模板语言。您还可以使用ElementTree API本身构建树,只需在结果上调用.write()
。
答案 1 :(得分:1)
我不是一个使用XML的向导,但是,看起来你需要安装elementtree(显然是SimpleXMLWriter wasn't included in python2.5 ......也许它从未被拉入标准库),或使用标准库中的设施。
对我来说,它看起来像是:
import xml.etree.ElementTree as ET
root = ET.Element('root')
#...
for colns in result:
new_group = ET.SubElement(root,"Group")
new_elem = ET.SubElement(new_group,"Name")
new_elem.text = "%s" %(colns[0])
#I suppose that:
#ET.SubElement(new_group,"Name").text = str(colns[0])
#would work too ...
new_elem = ET.SubElement(new_group,"Mail")
new_elem.text = "%s" %(colns[0])
然后,您可以使用root.write()
。