2016-07-18 9 views
-1

Mein Code ist ziemlich einfach;Cryptic Fehler in Lxml beim Öffnen der Datei

f = open(r"C:\filepath\file.xml") 
xml = f.read() 
tree = etree.parse(xml) 

Wenn dies ausgeführt wird, erhalte ich die Stack-Trace

tree = etree.parse(xml) 
    File "src/lxml/lxml.etree.pyx", line 3427, in lxml.etree.parse (src\lxml\lxml.etree.c:79801) 
    File "src/lxml/parser.pxi", line 1782, in lxml.etree._parseDocument (src\lxml\lxml.etree.c:115995) 
    File "src/lxml/parser.pxi", line 1808, in lxml.etree._parseDocumentFromURL (src\lxml\lxml.etree.c:116345) 
    File "src/lxml/parser.pxi", line 1712, in lxml.etree._parseDocFromFile (src\lxml\lxml.etree.c:115233) 
    File "src/lxml/parser.pxi", line 1115, in lxml.etree._BaseParser._parseDocFromFile (src\lxml\lxml.etree.c:109930) 
    File "src/lxml/parser.pxi", line 573, in lxml.etree._ParserContext._handleParseResultDoc (src\lxml\lxml.etree.c:103404) 
    File "src/lxml/parser.pxi", line 683, in lxml.etree._handleParseResult (src\lxml\lxml.etree.c:105058) 
    File "src/lxml/parser.pxi", line 611, in lxml.etree._raiseParseError (src\lxml\lxml.etree.c:103924) 
IOError 

Was ist hier los?

Antwort

1

parse() akzeptiert Pfad zur XML-Datei:

tree = etree.parse(r"C:\filepath\file.xml") 

Derzeit Code tatsächlichen Inhalt des XML zu parse() verläuft, die eine solche IOError auslösen. Sie können stattdessen fromstring() verwenden, um das Objekt Element aus einer Zeichenfolge zu erstellen, die die eigentlichen XML-Daten enthält. Und bei Bedarf können Sie dann ein ElementTree Objekt aus zuvor erstellten Element:

f = open(r"C:\filepath\file.xml") 
xml = f.read() 
root = etree.fromstring(xml) 
tree = etree.ElementTree(root) 
erstellen