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 に答える