PYTHONでMINIDOMをつかってXMLファイルを作成したところ、
1つのノードに複数のアトリビュートがある場合、その並びがデータ入力順にならず、
勝手にソートされてしまった。
帳簿データで、左から日時->適用->金額->伝票No.な並びで作成していたのだが、
この並びを変えられてしまうとすごく見づらい。
処理プログラムができてしまえば生のxmlデータを見ることはないかもしれないが、
これななかなか見づらい。
なので一応minidom.pyのソースを眺めてみた。
toprettyxml()というすごく便利な関数で出力していたのだが、この関数から呼ばれる
Elementクラスのwritexml()内で
a_names.sort()
とソートしている箇所があった??
なので、Myminidom.pyとして、この一行をコメントオフしてみたのだが、、、、
なぜか改善せず。
出力時ではなく、アトリビュート入力時に並びがかわっているのかぁぁぁ???
とあきらめかけていたところ、下の記事が。
↓↓↓
http://ja.softuses.com/29332
上記の修正に加えて、Elementクラスの__init__()関数内で
self._attrs = OrderedDict()
#self._attrs = {} # attributes are double-indexed:
の修正を行い、ファイル先頭あたりに
from collections import OrderedDict
のインポート文を追加する。
おぉ!これで入力順にアトリビュートの並びが保持され
toprettyxml()から出力されました!!
opensource恐るべしですな。