2016-11-29 3 views
0

bin derzeit lernen mit Python 101 und in einem der Beispiele bekomme ich einen Fehler und habe keine Ahnung, wie Sie es beheben - mein Code ist 100% identisch mit dem Buch (geprüft 3 mal schon) und es gibt immer noch diesen Fehler aus. Hier ist der Code:Unbekannter Fehler bei der Verwendung von XML-Modul - Parsing XML

from lxml import etree 

def parseXML(xmlFile): 
    """ 
    Parse the xml 
    """ 
    with open(xmlFile) as fobj: 
     xml = fobj.read() 

    root = etree.fromstring(xml) 

    for appt in root.getchildren(): 
     for elem in appt.getchildren(): 
      if not elem.text: 
       text = 'None' 
      else: 
       text = elem.text 
      print(elem.tag + ' => ' + text) 

if __name__ == '__main__': 
    parseXML('example.xml') 

und hier ist xml-Datei (es ist das gleiche wie im Buch):

<?xml version="1.0" ?> 
<zAppointments reminder-"15"> 
    <appointment> 
     <begin>1181251600</begin> 
     <uid>0400000008200E000</uid> 
     <alarmTime>1181572063</alarmTime> 
     <state></state> 
     <location></location> 
     <duration>1800</duration> 
     <subject>Bring pizza home</subject> 
    </appointment> 
    <appointment> 
     <begin>1234567890</begin> 
     <duration>1800</duration> 
     <subject>Check MS office webstie for updates</subject> 
     <state>dismissed</state> 
     <location></location> 
     <uid>502fq14-12551ss-255sf2</uid> 
    </appointment> 
</zAppointments> 

EDITED: Sry, bekam so begeistert von meinem ersten Beitrag, dass ich tatsächlich vergessen um den Fehlercode zu setzen.

Traceback (most recent call last): 
    File "/home/michal/Desktop/nauka programowania/python 101/parsing_with_lxml.py", line 21, in <module> 
    parseXML('example.xml') 
    File "/home/michal/Desktop/nauka programowania/python 101/parsing_with_lxml.py", line 10, in parseXML 
    root = etree.fromstring(xml) 
    File "src/lxml/lxml.etree.pyx", line 3213, in lxml.etree.fromstring (src/lxml/lxml.etree.c:77737) 
    File "src/lxml/parser.pxi", line 1830, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:116674) 
    File "src/lxml/parser.pxi", line 1711, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:115220) 
    File "src/lxml/parser.pxi", line 1051, in lxml.etree._BaseParser._parseUnicodeDoc (src/lxml/lxml.etree.c:109345) 
    File "src/lxml/parser.pxi", line 584, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:103584) 
    File "src/lxml/parser.pxi", line 694, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:105238) 
    File "src/lxml/parser.pxi", line 624, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:104147) 
lxml.etree.XMLSyntaxError: Specification mandate value for attribute reminder-, line 2, column 25 

Danke für Hilfe !!

+0

hinzugefügt, sorry, bekam begeistert über meinen ersten Beitrag hier und etwa vergessen es. – doublemc

Antwort

2

Der einzige Fehler in der XML kann hier gefunden werden: <zAppointments reminder-"15">, sollte sein: <zAppointments reminder="15">.

In Zukunft können nützliche Tools zur Validierung von XML online gefunden werden. Hier zum Beispiel: https://www.xmlvalidation.com/

+0

Funktioniert jetzt gut, werde das nächste Mal die xmlvalidation-Seite verwenden, danke viel! – doublemc

0

Fehler sein können, in

<zAppointments reminder-"15"> 

Für die nächste Validierung versuchen xmllint zu verwenden:

xmllint --valid --noout example.xml 
Verwandte Themen