note でエクスポートしたXMLをPythonで読みやすくしたい(その3)
再び。
こちらの続きです。
(1)XMLファイルを読み込む
(2)読み込んだデータを木構造でアクセスする
(3)木構造の1Elementを1行で表示する
前回やったのはここまで。
これまでは試験用のサンプルXMLファイル 'country_data.xml' でテストしてきました。今度はnoteでエクスポートしたXMLファイルでテストしてみます。
import xml.etree.ElementTree as ET
tree = ET.parse('note-ayumi_kat-short.xml')
root = tree.getroot()
def show_element(level, el):
print(level, el.tag, el.attrib, el.text)
def show_child(level, el):
show_element(level, el)
for child in el:
show_child(level+1, child)
show_child(1, root)
書き換えたのは次の行のファイル名のみ。
tree = ET.parse('note-ayumi_kat-short.xml')
'note-ayumi_kat-short.xml'は、エクスポートしたXMLファイルから直近の記事を2つくらい取り出したものである。
オリジナルはちょっと大きすぎるので。
すんなり動くことは動いた。
結果はこの通り。
1 rss {'version': '2.0'} None
2 channel {} None
3 title {} AyumiKatayama
3 link {} https://note.com/ayumi_kat
3 description {} 2022年6月にnoteを始めました。プログラマー歴30年以上。C、C++、C#、VB、VBA。リアルタイムシステムの組込みソフトウェアを主にやってきたました。なのでOSもCPUも様々です。その他関心のあることは、物理、数学、明治時代、死刑制度、そして辞書。コメントは大歓迎です。
3 pubDate {} Mon, 01 May 2023 16:59:36 +0900
3 language {} ja
〈中略〉
3 item {} None
4 title {} C言語教室 第23回 - スタックとキュー(回答提出)
4 link {} https://note.com/...
4 {}creator {} AyumiKatayama
4 guid {'isPermaLink': 'false'} ne014d60a70d2
4 description {} None
4 {}encoded {} <figure name="..."><img src="/assets/....png"><figcaption></figcaption></figure><p name="..." id="...">こちらの課題回答です。</p><h2 name="..." id="...">課題</h2><figure name="..." id="..."><blockquote><p name="..." id="...">1. 配列を使って、スタックを書いてください。スタックを初期化する関数で配列の大きさを指定してください。<br>2. 配列を使って、キューを書いてください。キューの初期化する関数で配列の大きさを指定してください。可能であれば配列をリングバッファとして循環して使えるようにしてください。</p>
3 item {} None
4 title {} 『犬神家の一族』を見終わって、台所を片付けながら観るでも聴くでもなく放ったらかしていたテレビから怪談が始まって、気が付けばしっかり観ていた・・・まだお風呂入ってないんだよ・・・どうしてくれよう・・・😭
4 link {} https://note.com/...
〈後略〉
大幅に割愛したが、ようするにわかりにくい。
うーむ。
どんな形式で出力すればわかりやすいんだろう。
csv?
記事1つを丸ごと1つのセルに押し込んでもわかりにくいよなぁ。
htmlかな。
XMLでは、記事1つ分が、
<item>~</item>
で括られている。
さらに記事タイトルが
<title>~</title>
で括られている。
タイトルで畳んで、タイトルをクリックすると展開される・・・というのがわかりやすそう?
XMLのタグは、htmlのタグとしては意味をなさない。
htmlのタグを付けて、XMLのタグは・・・見出しにすればいい?
試しに、次のような感じに修正してみた。
<details>
<summary>タイトル</summary>
</details>
item → details
title → summary
に変更するわけだ。
するとこんな感じ。
記事の中身は読みにくいし、サマリーも格好よくないけど、まぁいい。
で?
Pythonで「Element」の「tag」をどうやったら変更できるんだろう。