使用 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 文件)。
我正在尝试编写一个插件来从 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 文件)。