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

标签 python xml xml.etree

我正在尝试比较两个 api 响应的数据。其中之一返回 xml。问题是 xml 响应中的标签之一为空。我找不到检查该值是否存在的方法。

这是 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 包吗?因为有了

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

关于python - 如何在python中检查xml标签值是否为none,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58878534/

相关文章:

python - 为什么我用sqlite的时候django需要psycopg2?

python - Django 模型 : How to combine the reverse access sets from two foreignkey fields?

java - 如何更改项目单击时的列表项目外观。

xml - XSLT - 匹配其中包含特定节点的节点(如 jQuery ":has")

python - 在 Python 中,解析自定义 XML 标签而不解析 HTML

python-3.x - XML 到 CSV Python

python - “无法访问 'sort_values' 对象的可调用属性 'DataFrameGroupBy',请尝试使用 'apply' 方法”

xml - 处理 RTF 编码文件并将其转换为 XML 的好方法是什么?

python - 继承或模拟 pythons etree.ElementTree.Element 可能吗?

python - 如何用狮身人面像制作两列