PythonのxmlモジュールのElementからElementTreeを作る
PythonのxmlまたはdefusedxmlモジュールのElementオブジェクトから、ElementTreeオブジェクトを作ってみました。
目次
ElementTreeコンストラクター
ElementTreeオブジェクトのコンストラクターがdefusedxmlで呼べなかったので、組み込みモジュールのxmlモジュールの方のコンストラクターを使います。
import xml.etree.ElementTree
tree = import xml.etree.ElementTree.ElementTree([element], [file])
変数 |
型 |
内容 |
---|---|---|
element |
Element |
省略可。既定値はNone。Elementオブジェクトの根要素。 |
file |
str, object |
省略可。既定値はNone。XMLファイル名、またはファイルオブジェクト。 |
tree |
ElementTree |
ElementTreeオブジェクト。 |
作成例
試してみましょう。
次のXMLファイルをreadで文字列として読み込んで、fromstringメソッドでElementオブジェクトに変換した後に、ElementTreeオブジェクトを作って、ElementTreeオブジェクトのwriteメソッドでファイルに出力します。
<?xml version="1.0" encoding="UTF-8" ?>
<tip>
<middle id='1'>
<bottom>content_1</bottom>
</middle>
<middle id='2'>
<!--
<bottom>content_20</bottom>
<bottom>content_21</bottom>
-->
<bottom>いろは</bottom>
<bottom>にほへと</bottom>
<bottom></bottom>
</middle>
<middle id='3'>
content_3
</middle>
</tip>
import defusedxml.ElementTree as ET
import xml.etree.ElementTree
with open('test.xml', mode='rt', encoding='utf-8') as f:
xml_string = f.read()
root = ET.fromstring(xml_string)
tree = xml.etree.ElementTree.ElementTree(root)
tree.write('out.xml', encoding='utf-8', method='xml')
出力はこうなります。
<tip>
<middle id="1">
<bottom>content_1</bottom>
</middle>
<middle id="2">
<bottom>いろは</bottom>
<bottom>にほへと</bottom>
<bottom />
</middle>
<middle id="3">
content_3
</middle>
</tip>
writeメソッドが使えるのは楽かも。
公開日
広告
PythonとXMLカテゴリの投稿
- PythonでHTMLから特定のタグを抜き出してCSVにする
- PythonでHTMLを加工する
- PythonでXMLと文字列の変換
- PythonでXMLの構造を表示してみた
- PythonでXMLの読み込みと書き出し
- PythonのBeautifulSoup4でHTMLに要素を追加する
- PythonのBeautifulSoup4でHTMLの要素の内容にアクセスする
- PythonのBeautifulSoup4でHTMLの要素の内容を削除する
- PythonのBeautifulSoup4でHTMLの要素の囲いを外す
- PythonのBeautifulSoup4でHTMLの要素を削除する
- PythonのBeautifulSoup4でHTMLの要素を抜き出す
- PythonのBeautifulSoup4でHTMLの要素を新しい要素で囲う
- PythonのBeautifulSoup4でHTMLの要素を検索する
- Pythonのxmlで要素を列挙する
- PythonのxmlモジュールのElementTreeのルート要素を取得する
- PythonのxmlモジュールのElementからElementTreeを作る