0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MINIDOMがアトリビュートを勝手にソートしてしまう件

Posted at

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恐るべしですな。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?