繁体   English   中英

Python ElementTree“找不到元素”异常

[英]Python ElementTree “no element found” exception

大家好日子。

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

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

可悲的是,我的ElementTree给了一个例外! 使用以下代码读取文件:

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

例外:

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,没有区别。 它始终是文件的最后一行! 我究竟做错了什么? 谢谢!

您的代码未正确关闭。 例如,要关闭“陨石”标签,请使用</meteorite>而不是<meteorite />

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

如果你格式化,这就是你得到的:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM