发布
社区首页 >问答首页 >Python ElementTree“找不到元素”异常

Python ElementTree“找不到元素”异常
EN

Stack Overflow用户
提问于 2014-04-11 09:02:35
回答 2查看 31.8K关注 0票数 9

大家好。

我正在尝试使用ElementTree读取、解析和使用xml文件。以下数据:

代码语言:javascript
代码运行次数:0
复制
<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 />

不幸的是,I ElementTree给了一个例外!使用以下代码读取文件:

代码语言:javascript
代码运行次数:0
复制
import xml.etree.ElementTree as ET
***code***
tree = ET.parse("res\\data.xml")
root = tree.getroot()

例外:

代码语言:javascript
代码运行次数:0
复制
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***

我不知道出了什么问题,我试着用我能想象到的每一种可能的方式来改变data.xml,没有什么区别。它总是文件的最后一行!我做错了什么?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-28 04:32:05

您的标签未正确关闭。例如,要关闭"meteorite“标记,请使用</meteorite>而不是<meteorite />

票数 12
EN

Stack Overflow用户

发布于 2014-04-11 09:05:08

您的XML不是格式良好的,ElementTree无法解析它-它看起来确实像是真正文档的一部分。

以下是格式化后得到的结果:

代码语言:javascript
代码运行次数:0
复制
<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/>
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23001757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档