[解決済み] Python の ElementTree を XML ファイルにきれいに印刷するにはどうしたらいいですか?
質問内容
背景
SQLiteを使ってデータベースにアクセスし、必要な情報を取り出しています。Pythonバージョン2.6のElementTreeを使って、その情報を含むXMLファイルを作成しています。
コード
import sqlite3
import xml.etree.ElementTree as ET
# NOTE: Omitted code where I acccess the database,
# pull data, and add elements to the tree
tree = ET.ElementTree(root)
# Pretty printing to Python shell for testing purposes
from xml.dom import minidom
print minidom.parseString(ET.tostring(root)).toprettyxml(indent = " ")
####### Here lies my problem #######
tree.write("New_Database.xml")
試行回数
を使ってみました。
tree.write("New_Database.xml", "utf-8")
を上記のコードの最後の行に置き換えても、XMLのレイアウトは全く編集されず、まだごちゃごちゃしています。
また、いじくり回してみようと思い、こうしてみました。
tree = minidom.parseString(ET.tostring(root)).toprettyxml(indent = " ")
というエラーが出て、Python シェルに出力されません。
AttributeError: 'unicode' オブジェクトには 'write' という属性がありません。
.
質問内容
最終行でXMLファイルにツリーを書き込むとき、Pythonシェルに書き込むのと同じようにXMLファイルにきれいに印刷する方法はありますか?
を使用することはできますか?
toprettyxml()
それとも別の方法があるのでしょうか?
どのように解決するのですか?
XMLの文字列が何であれ、書き込み用のファイルを開き、その文字列をファイルに書き込めば、好きなファイルに書き込むことができます。
from xml.dom import minidom
xmlstr = minidom.parseString(ET.tostring(root)).toprettyxml(indent=" ")
with open("New_Database.xml", "w") as f:
f.write(xmlstr)
特にPython 2では、文字列内のUnicode文字についてあまり厳密でなく、また洗練されていないため、1つだけ複雑な可能性があります。もし、あなたの
toprettyxml
メソッドは、Unicode文字列(
u"something"
) の場合、それをUTF-8などの適切なファイルエンコーディングにキャストしたい場合があります。例えば、1行の書き込みを次のように置き換えます。
f.write(xmlstr.encode('utf-8'))
関連
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] 改行やスペースを入れずに印刷する方法
-
[解決済み] JSONファイルをprettyprintする方法は?
-
[解決済み] JavaからXMLをきれいに印刷する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み】ValueError: xとyは同じサイズでなければならない