这是我的代码:
import os
os.chdir('d:/py/xml/')
from lxml import etree
from io import StringIO
#----------------------------------------------------------------------
def parseXML(xmlFile):
"""
Parse the xml
"""
f = open(xmlFile)
xml = f.read()
f.close()
tree = etree.parse(StringIO(xml))
context = etree.iterparse(StringIO(xml))
for action, elem in context:
if not elem.text:
text = 'None'
else:
text = elem.text
print (elem.tag + ' => ' + text)
if __name__ == "__main__":
parseXML("example.xml")
我想在下面提取这个xml文件:
<?xml version="1.0" ?>
<zAppointments reminder="15">
<appointment>
<begin>1181251680</begin>
<uid>040000008200E000</uid>
<alarmTime>1181572063</alarmTime>
<state></state>
<location></location>
<duration>1800</duration>
<subject>Bring pizza home</subject>
</appointment>
<appointment>
<begin>1234360800</begin>
<duration>1800</duration>
<subject>Check MS Office website for updates</subject>
<location></location>
<uid>604f4792-eb89-478b-a14f-dd34d3cc6c21-1234360800</uid>
<state>dismissed</state>
</appointment>
</zAppointments>
出现此错误,不确定我做错了什么,请帮忙。
builtins.TypeError:读取文件对象必须返回纯字符串
谢谢,
答案 0 :(得分:0)
import os
os.chdir('d:/py/xml/')
from lxml import etree
#from io import StringIO
#----------------------------------------------------------------------
def parseXML(xmlFile):
"""
Parse the xml
"""
f = open(xmlFile)
#xml = f.read()
#f.close()
#tree = etree.parse(StringIO(xml))
context = etree.iterparse(f)
for action, elem in context:
if not elem.text:
text = 'None'
else:
text = elem.text
print (elem.tag + ' => ' + text)
if __name__ == "__main__":
parseXML("example.xml")
所以这是最终的代码,万一有人需要它,谢谢你Blckknght