使用 Python 读取 XML 文件

read XML file with Python

我正在尝试编写一个插件来从 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 编码的文件?

使用 encode/decode 函数或导入编解码器。

示例: x = 'abcd' y = x.encode('utf-8') y.decode('utf-8')

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

通常,有效的 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 文件)。