• 締切済み

PythonでXMLをcsvに変換したいです。

pythonで、特定のファルダにXMLファイルが追加されるたびにCSVファイルを新しく作成してそこに書き込んでいくという事がしたいのですが、なかなかうまくいかず困っています。 下記のようなXMLなのですが、どうしたら良いのでしょうか? <?xml version="1.0" encoding="UTF-8"?> <file format="current_readings" version="1.25" name="test.xml" author="verxxx x.xx"> <base> <serial>563C10SS</serial> <model>XXX-XXXX</model> <name>ABC1</name> <time_diff>540</time_diff> <std_bias>0</std_bias> <dst_bias>0</dst_bias> <time_zone>(UTC+09:00) 大阪、札幌、東京</time_zone> <lan> <input>0</input> <output>0</output> </lan> </base> <group> <num>0</num> <name>Group1</name> <remote> <serial>AAAAAAA1</serial> <model>XXX-NNN</model> <num>1</num> <name>Unit01</name> <rssi repeater="0">5</rssi> <ch> <num>1</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008469</unix_time> <time_str>2018-09-27 09:34:29</time_str> <value valid="true">25.0</value> <unit>C</unit> <batt>5</batt> </current> <record> <type>13</type> <unix_time>1538007269</unix_time> <data_id>884</data_id> <interval>300</interval> <count>5</count> <data> 2a0f0a605f560== </data> </record> </ch> <ch> <num>2</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008469</unix_time> <time_str>2018-09-27 09:34:29</time_str> <value valid="true">61</value> <unit>%</unit> <batt>5</batt> </current> <record> <type>208</type> <unix_time>1538007269</unix_time> <data_id>884</data_id> <interval>300</interval> <count>5</count> <data> das54f0565== </data> </record> </ch> </remote> <remote> <serial>BBBBBBB1</serial> <model>XXX-NNN</model> <num>2</num> <name>Unit02</name> <rssi repeater="0">3</rssi> <ch> <num>1</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008192</unix_time> <time_str>2018-09-27 09:29:52</time_str> <value valid="true">26.0</value> <unit>C</unit> <batt>5</batt> </current> <record> <type>13</type> <unix_time>1538006992</unix_time> <data_id>883</data_id> <interval>300</interval> <count>5</count> <data> 54829652hughA== </data> </record> </ch> <ch> <num>2</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008192</unix_time> <time_str>2018-09-27 09:29:52</time_str> <value valid="true">58</value> <unit>%</unit> <batt>5</batt> </current> <record> <type>208</type> <unix_time>1538006992</unix_time> <data_id>883</data_id> <interval>300</interval> <count>5</count> <data> 481762opjuhgft== </data> </record> </ch> </remote> <remote> <serial>AAABB2</serial> <model>XXX-NNN</model> <num>3</num> <name>Unit03</name> <rssi repeater="0">3</rssi> <ch> <num>1</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008214</unix_time> <time_str>2018-09-27 09:30:14</time_str> <value valid="true">26.5</value> <unit>C</unit> <batt>5</batt> </current> <record> <type>13</type> <unix_time>1538007014</unix_time> <data_id>883</data_id> <interval>300</interval> <count>5</count> <data> 7wTvBPEE8gTxBA== </data> </record> </ch> <ch> <num>2</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008214</unix_time> <time_str>2018-09-27 09:30:14</time_str> <value valid="true">55</value> <unit>%</unit> <batt>5</batt> </current> <record> <type>208</type> <unix_time>1538007014</unix_time> <data_id>883</data_id> <interval>300</interval> <count>5</count> <data> f6a72f5aaa== </data> </record> </ch> </remote> </group> </file>

みんなの回答

  • hue2011
  • ベストアンサー率38% (2801/7249)
回答No.2

こんなものをだらだら引用しなくたって、要するにタグで構造化されたテキストを扱うなら、Pythonなんかは大得意な話です。 何をimportしてもいいんですが、まあbeautifulsoupでも持ってくれば一発でしょう。そんなことをしなくても大丈夫は大丈夫ですけど。 その上質問があるならお聞きしますけど、普通はあっさりできることをこんなまるごとやってくれと言わんばかりの言い方だったら答える気にもなりません。本人が何もしないで人に教えてくれというのは褒められたことじゃありませんよ。

  • hiodraiu
  • ベストアンサー率15% (451/2846)
回答No.1

何が上手くか無いのか書かないと答えようがないと思いませんか。 少なくとも、私の部下がこんな質問してくるようなら問題視します。 文頭で「Pythonで」と書かれたら、言語に依存した質問だと思うのですが、これだけタグを羅列されたら、XMLをCSVに変換する際の仕様の話のようにも感じます。

date_205s
質問者

補足

文字かいっぱいで詳細が書けなくなってしまったためざっくりとした質問で失礼しました。 現状、はじめのformatからauthorは elementtrenのattribを使用して取得し、csvに書き込むことが出来たのですが、その他の子要素、孫要素の内容はどの様にデータの取得・書き込みをしたら良いのかがわからなくて困っています。