その時々

その時々で違うんです。特に決まっていないんです。

PythonでXMLを触ってみる7 minidomね

前回はタグ名を変換してみましたが、
今回も同じことをします。
ただ、もっと簡単に出来るのです。
メーリングリストで教えてもらったロジックです。

Sample.xml

<?xml version="1.0" encoding="UTF-8"?>
<cars>
  <car>
    <name>乗用車</name>
    <price>150</price>
  </car>
  <car>
    <name>トラック</name>
    <price>500</price>
  </car>
  <car>
    <name>オープンカー</name>
    <price>200</price>
  </car>
</cars>

minidom8a.py

# _*_ coding: utf-8 _*_

import xml.dom.minidom

rules = {
    'cars': u'車リスト',
    'car': u'車',
    'name': u'名前',
    'price': u'価格',
}

doc = xml.dom.minidom.parse('Sample.xml')

for org_name, new_name in rules.iteritems():
    for node in doc.getElementsByTagName(org_name):
        doc.renameNode(node, None, new_name)

print doc.toxml()

実行結果

$ python minidom8a.py
<?xml version="1.0" ?><車リスト>
  <車>
    <名前>乗用車</名前>
    <価格>150</価格>
  </車>
  <車>
    <名前>トラック</名前>
    <価格>500</価格>
  </車>
  <車>
    <名前>オープンカー</名前>
    <価格>200</価格>
  </車>
</車リスト>

すごくシンプルです。
この方法がベストなのかも。