作業経過|Scrapbox上に著作権のページを作成するプログラムを書く
XMLを読み込むための型宣言を書いた
プログラムの実装によっては仕様を変えるかも
別のことを色々調べていたのでここまで来るのにかなり時間がかかっている
まあまあ短く書けそうな案が浮かんだ
code:python3.10(py)
from typing import NamedTuple, Any
from xml.etree.ElementTree import Element as XMLElement
result = {}
for k in keys:
if k in data:
else:
result |= {k: ""}
return result
class Sentence(NamedTuple): # Sentenceタグ用のクラス
Num: str
WritingMode: str
text: str
tagname: str = "Sentence"
def from_xml(xml: XMLElement):
if(xml.tag != "Sentence"): return None
data = xml.attrib | {"text": xml.text}
return Sentence(**_nokey2empty(data, keys))
Sentence.from_xml(xml)と書くと、Element(as XMLElement)の中から自動的に必要な値を取り出して、適切なSentence型の値を返してくれる
書く手間を省くためにSentenceとNamedTupleの間にもう一個クラスを挟もうかと思ったけれど、NamedTupleの二重オーバーライドはうまく動かなかったので没 代わりに外側に設けた関数でどうにかした
これからSentence以外のクラスにもfrom_xml()を書いていくことになるのはまあまあめんどくさいと思う
中のソースコードも書き換えないといけないし
このソースコードは属性と直下のテキストのみを想定した最小構成
直下に別のタグがあるやつはまた何かしら書き足さないといけないな( ◞‸◟)
とりあえず、XML内のデータを自前の型に落とし込むことはできたっぽい
https://gyazo.com/f449f81051fa313d2c2a9fb3f4295712
書き換えた
この手法、デバッグに時間がかかるのが難点だな
量が多い分、チェックに時間がかかる
その代わり、堅牢なプログラムには期待できそうな気がするけれど
修正した
Python上からScrapbox上にページを書き込むためにWebSocketを開く必要がある