👋

PythonでXML文字列を整形する

2024/05/09に公開

概要

PythonでXML文字列を整形するプログラムの備忘録です。

プログラム1

以下を参考にしました。

https://hawk-tech-blog.com/python-learn-prettyprint-xml/

不要な空行を削除する処理などを加えています。

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

以下を参考にしました。

https://qiita.com/hrys1152/items/a87b4ca3c74ec4997f66

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