2016-11-29 8 views
0

Python 101を使用して実際に学習していますが、エラーが発生していて、解決方法がわかりません - 私のコードは本の100% 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サイトを使うつもりです。 – doublemc

0

エラーは、次の検証のために

<zAppointments reminder-"15"> 

であってもよいxmllintを使用しよう:

xmllint --valid --noout example.xml 
関連する問題