程式跌倒筆記
程式:
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)
結果就沒問題了: