亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果使用 minidom 在 python 中找不到標簽,則繼續 xml 解析

如果使用 minidom 在 python 中找不到標簽,則繼續 xml 解析

開滿天機 2021-08-24 19:09:41
示例 XML 文檔<Authors>    <Author>        <LastName>def</LastName>        <age>20</age>    </Author>    <Author>        <ForeName>ghi</ForeName>        <age>22</age>    </Author>    <Author>        <ForeName>mno</ForeName>        <LastName>pqr</LastName>        <age>23</age>    </Author></Authors>樣本輸出Author:FirstName :  -LastName :  defAuthor:FirstName :  ghiLastName : - Author:FirstName :  mnoLastName :  pqr示例代碼import xml.dom.minidom# use the parse() function to load and parse an XML filedoc = xml.dom.minidom.parse("sampleinput.xml");auth = doc.getElementsByTagName('Author')for a in auth:    print("Author:")    try:        print("FirstName : ",a.getElementsByTagName("ForeName")[0].firstChild.data)    except:        print("FirstName : - ")    try:        print("LastName : ",a.getElementsByTagName("LastName")[0].firstChild.data)    except:        print("LastName : - ")如果找不到相應的標簽,我想插入一個“-”符號。有沒有其他可靠的方法可以做到這一點而不是嘗試和排除?
查看完整描述

1 回答

?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

有!因此,讓我們看看a.getElementsByTagName如果它不包含您的目標元素,當您實際運行時會發生什么。


for a in auth:

    print(a.getElementsByTagName("ForeName"))


>>

[]

[<DOM Element: ForeName at 0x163a17226d0>]

[<DOM Element: ForeName at 0x163a1722898>]

是的,現在我們知道如果你嘗試獲取一個它沒有的元素,它會返回一個空列表并且也與文檔對齊:


NodeList 表示節點序列。這些對象在 DOM Core 推薦中以兩種方式使用:一個 Element 對象提供一個作為其子節點列表,Node 的 getElementsByTagName() 和 getElementsByTagNameNS() 方法返回具有此接口的對象以表示查詢結果。


現在,您可以在打印數據之前明確檢查元素是否存在,而不是執行try和except循環:


for a in auth:

    if a.getElementsByTagName("ForeName"):

        print("FirstName : ",a.getElementsByTagName("ForeName")[0].firstChild.data)

    else:

        print("FirstName : - ")


>>

FirstName : - 

FirstName :  ghi

FirstName :  mno

這里if塊檢查它是否不為空,然后打印。如果NodeList為空,則打印破折號。


查看完整回答
反對 回復 2021-08-24
  • 1 回答
  • 0 關注
  • 311 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號