如何在python中检查xml标记值是否为none

如何在python中检查xml标记值是否为none,python,xml,xml.etree,Python,Xml,Xml.etree,我试图比较两个api的响应数据。其中一个返回xml。问题是xml响应中的一个标记为null。我找不到检查该值是否存在的方法 下面是xml响应 <?xml version="1.0" encoding="UTF-8"?> <FCDB_RES_ENV> <FCDB_HEADER> <SOURCE>FCAT</SOURCE> <FCDBCOMP>FCDB</FCDBCOMP>

我试图比较两个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>


您正在使用lxml包吗?因为

from lxml.etree import ElementTree, fromstring
data = """..."""  # your XML string here 
tree = ElementTree(fromstring(data))
我发现你有语法错误

此外,是否要检索的文本?因为这里根本没有文本

第一次编辑:

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

您的“XML响应”不是XML(或者您只是部分粘贴了它)。无论如何,XML都是无效的。@Tomalak我粘贴了部分内容。让我编辑并编写有效的xmlAh,这样更好。但是,在XML中,
元素是空的,当然,
.text
None
。当您尝试改为
/FCDB\u BODY/MOBNO
时会得到什么?我得到的值在本例中是“03006846625”。我想在获取值之前检查它是否为空。我该怎么做?我找不到在这里插入if-else的方法
emailid=root.find(“./FCDB\u BODY/emailid”)
(不是
.findall()
-您只需要点击一次),然后:
如果emailid为None或emailid.text为None或emailid.text==”:。。。否则:…
很抱歉,我使用的是xml.etree。此外,我确实希望检索的文本,但由于我执行了许多请求,有时标记是空的。所以我想在这里添加任何条件来检查是否有值
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