用Python读取XML文件

时间:2015-02-05 19:57:42

标签: python xml utf-8

我试图编写一个插件来读取XML文件中的数据

在test.xml里面有:

<data>
    <items>
        <item test1="Arabic Words"></item>
        <item test2="English Words"></item>
    </items>
</data>

,代码是:

# coding: utf-8

from xml.dom import minidom
xmldoc = minidom.parse('test.xml')
itemlist = xmldoc.getElementsByTagName('item')

test1 = itemlist[0].attributes['test1'].value
test2 = itemlist[1].attributes['test2'].value

print(test1)
print(test2)

但我遇到编码问题:我无法将其设置为utf-8。

如何使minidom解释使用UTF-8编码的文件?

2 个答案:

答案 0 :(得分:1)

通常,有效的XML以XML伪标签开头,其中包含编码:

<?xml version="1.0" encoding="UTF-8"?>
...

minidom应该尊重这一点;如果你的文件有这样的标签但是没有被解释为UTF-8,你应该提出针对minidom的错误;但我一般都希望你的文件根本不包含这一行。

您可以使用

minidom.parseString("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + open("file.xml","r").read())

解决这个问题(但我建议修复你的XML文件)。

答案 1 :(得分:-1)

使用编码/解码功能或导入编解码器。

实施例:     x ='abcd'     y = x.encode('utf-8')     y.decode( 'UTF-8')

只需使用编码/解码并使用minidom来解析字符串而不是传递文件名。