2014-04-11 11 views
5

Guten Tag alle.Python ElementTree "kein Element gefunden" Ausnahme

Ich versuche zu lesen, zu analysieren und verwenden Sie eine XML-Datei mit ElementTree. folgende Daten ein:

<level> 
    <leveldata> 
     <level name="hh" difficulty="Easy" lenght="3600"> 
      <meteorite chance="4" speed="3" > 
       <image id="1"> 
       <image id="2"> 
       <image id="3"> 
      <meteorite /> 
      <meteorite chance="4" speed="3" > 
       <image id="4"> 
       <image id="5"> 
       <image id="6"> 
      <meteorite /> 
     <level /> 
    <leveldata /> 
    <meteorimages> 
     <meteor id="5" imagepath="res\meteorit_1.png"> 
     <meteor id="5" imagepath="res\meteorit_2.png"> 
     <meteor id="5" imagepath="res\meteorit_3.png"> 
    <meteorimages /> 
<datasheet /> 
<level /> 

Leider gibt, gebe ich ElementTree eine Ausnahme !!! Lesen Sie die Datei mit folgendem Code:

import xml.etree.ElementTree as ET 
***code*** 
tree = ET.parse("res\\data.xml") 
root = tree.getroot() 

Ausnahme:

File "E:\blabla\core.py", line 26, in load_levelproperties 
    *tree = ET.parse("res\\data.xml")* File "E:\Programme(x86)\Python2.7x86\lib\xml\etree\ElementTree.py", line 
1182, in parse 
    *tree.parse(source, parser)* File "E:\Programme(x86)\Python2.7x86\lib\xml\etree\ElementTree.py", line 
657, in parse 
    *self._root = parser.close()* File "E:\Programme(x86)\Python2.7x86\lib\xml\etree\ElementTree.py", line 
1654, in close 
    *self._raiseerror(v)* File "E:\Programme(x86)\Python2.7x86\lib\xml\etree\ElementTree.py", line 
1506, in _raiseerror 
    ***raise err xml.etree.ElementTree.ParseError: no element found: line 16, column 9*** 

ich nicht herausfinden kann, was falsch ist, ich habe versucht, data.xml auf jede erdenkliche Art und Weise zu ändern, kann ich mich vorstellen, nein Unterschied. Es ist immer die letzte Zeile der Datei! Was mache ich falsch? Danke!

Antwort

4

Ihre Tags werden nicht richtig geschlossen. Um beispielsweise ein "Meteorit" -Tag zu schließen, verwenden Sie </meteorite> nicht <meteorite />.

+1

Sieht so aus, als wäre ich heute im Willkommensparty-Team! Willkommen bei Stack Overflow @grvsmth. Herzlichen Glückwunsch zu Ihrer Doktorarbeit und ich hoffe, dass Sie 'while (yourStay) {versuchen {StackOverflow} fangen {Genuss}}'. Ja, das ist blöd, aber hey, Humor ist eines der letzten Dinge, die wir Menschen noch besser machen können als Computer. –

+1

Gut DANKE. Das habe ich gebraucht. – Nearoo

+0

Froh zu helfen, und danke für die Begrüßung! – grvsmth

6

Sie XML ist nicht wohlgeformt, ElementTree kann es nicht analysieren - es sieht wirklich aus wie es ein Teil eines echten Dokuments ist.

Hier ist, was Sie bekommen, wenn Sie es formatieren:

<level> 
    <leveldata> 
     <level name="hh" difficulty="Easy" lenght="3600"> 
      <meteorite chance="4" speed="3"> 
       <image id="1"> 
        <image id="2"> 
         <image id="3"> 
          <meteorite/> 
          <meteorite chance="4" speed="3"> 
           <image id="4"> 
            <image id="5"> 
             <image id="6"> 
              <meteorite/> 
              <level/> 
              <leveldata/> 
              <meteorimages> 
               <meteor id="5" imagepath="res\meteorit_1.png"> 
                <meteor id="5" imagepath="res\meteorit_2.png"> 
                 <meteor id="5" imagepath="res\meteorit_3.png"> 
                  <meteorimages/> 
                  <datasheet/> 
                  <level/> 
+0

Was meinst du mit "Format"? Wie soll ich es besser machen? – Nearoo

+0

@ user3424423 Ich habe gerade das XML eingerückt, so dass es einfacher ist zu sehen, dass das XML nicht richtig strukturiert ist. Elementtree kann damit nicht umgehen. – alecxe

+0

Das hilft mir überhaupt nicht. Was muss ich besser machen? – Nearoo

Verwandte Themen