こんにちは。私はこれに苦労していて、なぜエラーが発生するのかよくわかりません。基本的なXMLだけを新しいファイルにエクスポートしようとすると、TypeErrorが発生し続けます。以下はコードの小さなサンプルです
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import SubElement
import xml.etree.ElementTree as ET
root = Element('QuoteWerksXML')
tree = ElementTree(root)
ver = SubElement(root, "AppVersionMajor")
ver.text = '5.1'
tree.write(open('person.xml', 'w'))
ElementTree.write
メソッドのデフォルトはus-asciiエンコーディングであるため、バイナリを書き込むために開かれたファイルが必要です。
出力は、文字列(str)またはバイナリ(bytes)のいずれかです。これは、encoding引数によって制御されます。 encodingが
"unicode"
の場合、出力は文字列です。それ以外の場合はバイナリです。開いているファイルオブジェクトの場合、これはfileのタイプと競合する可能性があることに注意してください。文字列をバイナリストリームに書き込もうとしないように注意してください。その逆も同様です。
したがって、バイナリモードで書き込むためにファイルを開きます。
tree.write(open('person.xml', 'wb'))
または、テキストモードで書き込むためにファイルを開き、"unicode"
をencodingとして指定します。
tree.write(open('person.xml', 'w'), encoding='unicode')