👋
PythonでXML文字列を整形する
概要
PythonでXML文字列を整形するプログラムの備忘録です。
プログラム1
以下を参考にしました。
不要な空行を削除する処理などを加えています。
from xml.dom import minidom
import re
def prettify(rough_string):
reparsed = minidom.parseString(rough_string)
pretty = re.sub(r"[\t ]+\n", "", reparsed.toprettyxml(indent="\t")) # インデント後の不要な改行を削除
pretty = pretty.replace(">\n\n\t<", ">\n\t<") # 不要な空行を削除
pretty = re.sub(r"\n\s*\n", "\n", pretty) # 連続した改行(空白行を含む)を単一の改行に置換
return pretty
プログラム2
以下を参考にしました。
TEI/XMLを処理する場合には、名前空間の登録をおすすめします。
import xml.etree.ElementTree as ET
# 名前空間の登録
ET.register_namespace('', "http://www.tei-c.org/ns/1.0")
tree = ET.ElementTree(ET.fromstring(xml_string))
ET.indent(tree, space=' ')
tree.write('output.xml', encoding='UTF-8', xml_declaration=True)
まとめ
参考になりましたら幸いです。
Discussion