简化无检查,无需重复 XML 路径

问题描述 投票:0回答:1

我正在尝试解析一些 XML,其中某些标签并不总是在 XML 中。我在尝试获取文本时遇到错误,因为当它为 None 时我无法获取 .text

似乎应该有更好的方法来处理这个问题?这也只是一个值,我有很多需要提取的值,我不认为重复 XML 路径是一个很好的解决方案

如果值为 None,则返回“”;如果存在,则返回实际文本:

value = "" if properties.find("link[@title='myTitle']/a:inline/feed/entry/content/b:properties/c:Id", namespaces) is None else properties.find("link[@title='myTitle']/a:inline/feed/entry/content/b:properties/c:Id", namespaces).text
python xml
1个回答
0
投票

自己写一个小实用函数即可:

def get_xpath_value(xmlel, xpath, namespaces={}, fallback="")
    if el := xmlel.find(xpath):
        return el.text
    else:
        return fallback

value = get_xpath_value(properties, "link[@title='myTitle']/a:inline/feed/entry/content/b:properties/c:Id", namespaces=namespaces)
© www.soinside.com 2019 - 2024. All rights reserved.