程式跌倒筆記

Meew
·
·
IPFS
·
記錄犯蠢的瞬間以及發現的方法
xml搜尋特定標籤並輸出失敗

程式:

import xml.etree.ElementTree as ET
data2 ='''
<XML_Head Listname="1" Language="C" Orgname="A15010000H" Updatetime="2023/11/22 01:34:09">
    <Infos>
        <Info>
            <Id>C1_313020000G_000026</Id>
            <Name>宏亞食品巧克力觀光工廠</Name>
            <Zone />
            <Toldescribe>宏亞食品巧克力觀光工廠是一座以巧克力為主題的觀光工廠,建築設計、展場文字、陳列物、戶外景觀及相關造型皆與巧克力密不可分,全棟為綠建築,展場設計依照建築外觀之透光與否進行規劃,節能省碳,此外,展場更提供豐富的巧克力相關知識(含巧克力3500年歷史)為一寓教於樂之專業型廠館,是休閒娛樂絕佳去處。</Toldescribe>
            <Description>巧克力共和國是一座以巧克力為主題的觀光工廠,建築設計、館內主題設計皆以巧克力為主題,這裡也提供豐富的巧克力相關知識,亦可以DIY創作巧克力,為一寓教於樂、適合親子休閒娛樂的絕佳去處。</Description>
            <Tel>886-3-3656555</Tel>
            <Add>桃園縣八德市建國路386號</Add>
            <Zipcode>33451</Zipcode>
            <Region>桃園市</Region>
            <Town>八德區</Town>
            <Travellinginfo />
            <Opentime />
            <Picture1 />
            <Picdescribe1 />
            <Picture2 />
            <Picdescribe2 />
            <Picture3 />
            <difficult>0</difficult>
            <Picdescribe3 />
            <Map />
            <Gov>313020000G</Gov>
            <Px>121.297187</Px>
            <Py>24.943325</Py>
            <Orgclass>觀光工廠</Orgclass>
            <Class1>1</Class1>
            <Class2>14</Class2>
        </Info>
      </Infos>
</XML_Head>'''
tree2 = ET.fromstring(data2)
print(tree2.find('Id'))

解法&問題:

剛開始的時候,我直接打算呼叫Info階層內的其中一個標籤內容失敗(例如print(tree2.find('Id').text) ),查詢google後還是找不到甚麼有用的解決方法,後來我想到如果這是一棵樹,像是大學學到的binary tree,那麼,若我想要找到離源頭非常遠的數值的話,我必須一層一層呼叫下去,才能正確叫出特定數值,因此我做了一個小實驗:

tree2 = ET.fromstring(data2)
a = tree2.find('Infos')
b = a.find('Info')
c = b.find('Id')
print(c.text)

結果就沒問題了:

CC BY-NC-ND 4.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!