簡體   English   中英

如何檢查 xml 標記值是否在 python 中沒有

[英]How to check if xml tag value is none in python

我正在嘗試比較兩個 api 響應的數據。 其中之一返回 xml。 問題是 xml 響應中的標簽之一是 null。 我找不到檢查值是否存在的方法。

這是 xml 響應

<?xml version="1.0" encoding="UTF-8"?>
<FCDB_RES_ENV>
    <FCDB_HEADER>
        <SOURCE>FCAT</SOURCE>
        <FCDBCOMP>FCDB</FCDBCOMP>
        <MSGID>MB_31051021591539014</MSGID>
        <CORRELID>MB_31051021591539014</CORRELID>
        <USERID>615</USERID>
        <BRANCH>000</BRANCH>
        <MODULEID>LGN</MODULEID>
        <SERVICE>GetEmailMobNoDetails</SERVICE>
        <OPERATION>GetEmailMobNoDetails</OPERATION>
        <SOURCE_USERID>FCAT</SOURCE_USERID>
        <DESTINATION>FCDB</DESTINATION>
        <COUNTRYCODE>T001</COUNTRYCODE>
        <USERTYPE>ENS</USERTYPE>
        <LANGID>eng</LANGID>
        <CHANNELID>01</CHANNELID>
    </FCDB_HEADER>
    <FCDB_BODY>
        <EMAILID/>
        <MOBNO>03006846625</MOBNO>
        <FCDB_ERROR_RESP>
            <ERROR>
                <ECODE>00</ECODE>
                <EDESC>Your transaction has been processed successfully.</EDESC>
            </ERROR>
        </FCDB_ERROR_RESP>
        <FCDB_WARNING_RESP>
            <WARNING>
                <WCODE/>
                <WDESC/>
            </WARNING>
        </FCDB_WARNING_RESP>
    </FCDB_BODY>
</FCDB_RES_ENV>

請注意返回 None 值。

這是需要修改的代碼。 提前致謝。

response = requests.request("POST", url, data=payload.format(cust_no, cust_type), headers=headers)

tree = ElementTree.ElementTree(ElementTree.fromstring(response2.text))
root = tree.getroot()

for l in root.findall("./FCDB_BODY/EMAILID"):
    if l is not None:
        xml_email = l.text
        print("XML Email is", xml_email)
    else:
        pass

您使用的是 lxml package 嗎? 因為與

from lxml.etree import ElementTree, fromstring
data = """..."""  # your XML string here 
tree = ElementTree(fromstring(data))

我看到你有一個語法錯誤。

此外,您要檢索 <EMAILID /> 的文本嗎? 因為這里根本沒有文字。

第一次編輯:

from xml.etree import ElementTree

data = """..."""  # Your XML string
tree = ElementTree.ElementTree(ElementTree.fromstring(data))
root = tree.getroot()

for l in root.findall("./FCDB_BODY/EMAILID"):
    if l is not None:
        xml_email = l.text
        if xml_email:
            print("XML Email is", xml_email)
        else:
            print("There is no email for this entry")
    else:
        pass

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM