【问题标题】:reading XML with different encoding using python mindom使用 python mindom 读取具有不同编码的 XML
【发布时间】:2018-06-06 16:57:21
【问题描述】:

我写了一个使用 minidom 读取 XML 文件的脚本:

from xml.dom.minidom import parse
for File in Data['FileList']:
    Xml = parse(File)
#do something

运行良好,但有些人正在创建 XML,在 XML 中定义 UTF-8 编码并在标签中使用德语变音符号,所以我遇到了 xml.parsers.expat.ExpatError: not well-formed (invalid token)。

如果我在 XML 中手动更改为 encoding="ISO-8859-1" 它运行良好。

是否有更优雅的方式来更改编码,而不是编辑 XML 文件,例如告诉 minidom 使用不同于 XML 中定义的编码?

【问题讨论】:

  • 当实际编码为 ISO-8859-1 时,创建带有 XML 声明 encoding="UTF-8" 的 XML 文件是一个严重错误。我认为你应该告诉“伙计们”停止创建这些糟糕的 XML 文件。

标签: python xml python-3.x minidom


【解决方案1】:

我建议你这个解决方案:

在解析文件前,正常打开文件,将XML头对应的第一行替换为这一行:

<?xml version="1.0" encoding="ISO-8859-1"?>

然后保存文件并将其传递给minidom.parse() 函数。

这可能会帮助您替换每个文件中的第一行:Search and replace a line in a file in Python

【讨论】:

  • 这是我想避免的,但它似乎是读取它的唯一可靠方法。因此,在解析文件时似乎没有办法在 minidom 中定义不同的编码。
  • 我的意思不是手动打开文件,而是以编程方式打开文件(类似于:with open(File, 'rw') as my_file: #replace and save, then passe the file to parse()
猜你喜欢
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 2017-11-12
  • 2020-07-17
  • 2016-08-14
  • 2021-10-22
  • 1970-01-01
  • 2018-05-22
相关资源
最近更新 更多