###前提・実現したいこと
XMLファイルを一部書き換える。
下の例では、"title C"を"title A"に書き換える処理のみ行いたい。
ただし、元の書式は崩さない。
※「元の書式」とは、以下の内容です。
- XML宣言
- コメント行
- attributeの順番
###発生している問題・エラーメッセージ
- XML宣言が消え、行が詰められる
- コメント行が空行に置きかえられる
- attributeの順番が変わる
###インプットファイル(sample.xml)
XML
1<?xml version="1.0"?> 2<feed id="A" country="B"> 3<!--COMMENT--> 4 <title>title C</title> 5 <categories> 6 <category term="Asia" /> 7 <category term="South America" /> 8 <category term="Europe" /> 9 </categories> 10</feed>
###ソースコード(tmp.py)
Python
1# -*- coding: utf-8 -*- 2from xml.etree import ElementTree # XML parser のimport 3tree = ElementTree.parse("sample.xml") 4root = tree.getroot() 5# インプットファイルの"title C"を"title A"に書き換える 6root.find('title').text = "title A" 7tree.write("output.xml")
###アウトプットファイル(output.xml)
XML
1<feed country="B" id="A"> 2 3 <title>title A</title> 4 <categories> 5 <category term="Asia" /> 6 <category term="South America" /> 7 <category term="Europe" /> 8 </categories> 9</feed>
###試したこと
XML parserを使用せず、行単位で読み込み・書き込みの処理を試みました。
しかし、インプットファイルのXMLの書式が統一していないと、そういったファイルは処理ができなくなることが判明しました。
XMLファイルとして内容は同じだと思いますが、元の書式を保ったまま、必要箇所だけ書き換えたいです。
正規表現を使用して編集する必要があるのか、と現時点では考えています...。
###補足情報(言語/FW/ツール等のバージョンなど)
使用言語:Python
ファイル形式:XML
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/07 13:03
2016/08/07 13:16
2016/08/07 13:31
2016/08/07 13:47
2016/08/07 23:26