【发布时间】:2017-08-03 05:13:38
【问题描述】:
我有一个 xml 文件,我需要从中获取一些标签以用于某些用途,其中包含如下数据:
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
<?xml version="1.0"?>
<data>
<country name="Liechtenstein1">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria1" direction="E"/>
<neighbor name="Switzerland1" direction="W"/>
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia1" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
我需要解析这个,所以我使用了:
import xml.etree.ElementTree as ET
tree = ET.parse("myfile.xml")
root = tree.getroot()
此代码在第 2 行给出错误:xml.etree.ElementTree.ParseError: junk after document element:
我认为这是因为多个 xml 标签,你有什么想法,我应该如何解析这个?
【问题讨论】:
-
"我有一个 xml 文件..." 不,你没有。文件来自哪里?有没有可能解决那方面的问题? (解析它应该不会太难,但是如果有什么方法可以避免无效的 XML,那就更好了。)
-
这不是一个有效的 XML 文件。但是可以在
<?xml version="1.0"?>之前进行拆分,分别解析部分。 -
@smarx 你说的
is there a possibility..是什么意思?我只给出了文件中的示例数据,它确实包含更多像这样的根元素......@KlausD。寻找更好的选择。 -
@ggupta 我的意思是您是否控制创建该文件的应用程序,您能否修复它以生成有效的 XML?
-
然后将文件拆分到
<?xml ...行并分别解析每个部分(现在是一个有效的 XML 文档)。
标签: python xml python-2.7 parsing