2

minidom でファイルを解析したい:

with codecs.open(fname, encoding="utf-8") as xml:
   dom = parse(xml)

UnicodeEncodeError を返します。XML ファイルは BOM 形式のない UTF-8 であり、

<?xml version="1.0" encoding="utf-8"?>

最初の行で。

最初にファイルを読み取り、.encode("utf-8") して parseString に渡すと、機能します。minidom.parse を使用して UTF-8 XML ファイルを直接解析する方法はありますか?

4

1 に答える 1

2

デコードは XML パーサーに任せます。使用するコーデックを検出します。Unicode に変換せずにファイルを開きます。

with open(fname) as xml:
    dom = parse(xml)

open()の代わりに標準関数を使用していることに注意してくださいcodecs.open()

これは、どのXML パーサーにも当てはまります。ドキュメントの解析に使用するコーデックを XML プロローグから判断するのは、パーサーの仕事です。プロローグが存在しない場合、UTF-8 がデフォルトです。

于 2013-07-16T13:05:30.590 に答える