2016-11-29 83 views
0

正在学习使用Python 101和其中一个示例我得到一个错误,并且不知道如何解决它 - 我的代码与本书中的100%相同(checked它已经3次了),它仍然输出这个错误。 下面是代码:使用lxml模块时出现未知错误 - 解析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') 

,这里是XML文件(这是一样的书):

<?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> 

编辑:Sry基因,有这么兴奋我的第一篇文章,我居然忘了把错误代码。

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 

感谢您的帮助!

+0

加,对不起,得兴奋,我的第一篇文章在这里被遗忘它。 – doublemc

回答

2

xml中唯一的错误可以在这里找到:<zAppointments reminder-"15">,应该是:<zAppointments reminder="15">

将来可以在网上找到验证xml的有用工具。 这里有个例子:https://www.xmlvalidation.com/

+0

现在工作正常,下次会使用xmlvalidation网站,thx很多! – doublemc

0

错误可能是

<zAppointments reminder-"15"> 

对于接下来的验证尝试使用xmllint

xmllint --valid --noout example.xml 
相关问题