我正在尝试解析一些 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
自己写一个小实用函数即可:
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)