[解決済み] Pythonを使った簡単なXMLファイルの作成
2022-04-14 09:55:26
質問
PythonでシンプルなXMLファイルを作成したい場合、どのような選択肢がありますか?(ライブラリ的に)
私が欲しいxmlは以下のようなものです。
<root>
<doc>
<field1 name="blah">some value1</field1>
<field2 name="asdfasd">some vlaue2</field2>
</doc>
</root>
解決方法は?
最近、最も人気のある(そして非常にシンプルな)オプションは ElementTree API , Python 2.5から標準ライブラリに含まれるようになりました。
その際に利用できるオプションは
- ElementTree(ElementTreeの基本的な、純粋なPythonの実装。 2.5以降、標準ライブラリの一部)
- cElementTree(ElementTreeの最適化されたC実装。2.5以降、標準ライブラリでも提供。非推奨。3.3から自動で通常のElementTreeに折り込まれるようになった)
- LXML(libxml2がベース。ElementTree APIの豊富なスーパーセットとXPath、CSSセレクタなどを提供)
以下は、in-stdlibのcElementTreeを使用してサンプルドキュメントを生成する例です。
import xml.etree.cElementTree as ET
root = ET.Element("root")
doc = ET.SubElement(root, "doc")
ET.SubElement(doc, "field1", name="blah").text = "some value1"
ET.SubElement(doc, "field2", name="asdfasd").text = "some vlaue2"
tree = ET.ElementTree(root)
tree.write("filename.xml")
テストしてみたところうまくいきましたが、空白は重要でないことが前提です。もし、"prettyprint"のインデントが必要なら、その方法を調べますので、お知らせください。(LXML特有のオプションかもしれません。stdlibの実装はあまり使っていません)
さらに詳しい情報については、以下のリンクが参考になります。
- Python標準ライブラリによる実装のAPIドキュメント
- 入門チュートリアル (原著作者サイトより)
- LXML etree チュートリアル . (すべての主要な ElementTree 実装から利用可能な最良のオプションを読み込むためのサンプルコード付き)
最後の注意として、cElementTreeとLXMLのどちらかは、すべてのニーズに対して十分に速いはずです(どちらも最適化されたCコードです)が、最後の1ビットまで性能を絞り出す必要がある状況であれば、LXMLサイトのベンチマークがそれを示しています。
- XMLのシリアライズ(生成)においては、明らかにLXMLが勝っている
- 適切な親トラバースを実装する副作用として、LXMLはcElementTreeよりもパースが少し遅くなります。
関連
-
python string splicing.join()とsplitting.split()の説明
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] ローカルディレクトリからrequirements.txtファイルに従ってpipを使用してパッケージをインストールするにはどうすればよいですか?
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
python implement mysql add delete check change サンプルコード
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] JSONデータをファイルに書き込むにはどうしたらいいですか?
-
[解決済み] PythonでYAMLファイルをパースするには?
-
[解決済み] pickleを使ってdictを保存するにはどうしたらいいですか?