次xml
の形式のファイルがあります。
<NewDataSet>
<Root>
<Phonemic>and</Phonemic>
<Phonetic>nd</Phonetic>
<Description/>
<Start>0</Start>
<End>8262</End>
</Root>
<Root>
<Phonemic>comfortable</Phonemic>
<Phonetic>comfetebl</Phonetic>
<Description>adj</Description>
<Start>61404</Start>
<End>72624</End>
</Root>
</NewDataSet>
たとえば、ユーザーが を入力すると、プログラムがタグとnd
照合してパーツから戻るように処理する必要があります。xml ファイルを辞書に変換できれば、データを反復処理して、必要に応じて情報を見つけることができるのではないかと考えました。<Phonetic>
and
<Phonemic>
同じ目的で使用されるxmltodictを検索して見つけました。
import xmltodict
with open(r'path\to\1.xml', encoding='utf-8', errors='ignore') as fd:
obj = xmltodict.parse(fd.read())
これを実行すると、次のようになりますordered dict
。
>>> obj
OrderedDict([('NewDataSet', OrderedDict([('Root', [OrderedDict([('Phonemic', 'and'), ('Phonetic', 'nd'), ('Description', None), ('Start', '0'), ('End', '8262')]), OrderedDict([('Phonemic', 'comfortable'), ('Phonetic', 'comfetebl'), ('Description', 'adj'), ('Start', '61404'), ('End', '72624')])])]))])
残念ながら、これは物事を簡単にするものではなく、新しいデータ構造でプログラムを実装する方法がわかりません。たとえば、アクセスするnd
には、次のように書く必要があります。
obj['NewDataSet']['Root'][0]['Phonetic']
これはとてつもなく複雑です。通常の辞書にしようとしましたdict()
が、ネストされているため、内部のレイヤーは順序付けられたままになり、データが非常に大きくなります。