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(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:读取文件对象必须返回纯字符串

谢谢,

4

1 回答 1

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

于 2012-08-29T16:54:56.287 回答