Python 使用ElementTree解析空标记

Python 使用ElementTree解析空标记,python,xml-parsing,elementtree,Python,Xml Parsing,Elementtree,正在尝试使用ElementTree解析XML。我不知道如何处理像这样的空标记。如果标记根本不存在,.find()返回None,一切正常。但是,对于,.find()返回一些内容,随后调用文本的尝试失败,出现错误: TypeError: must be str, not NoneType 下面是失败的例子。它将无法解析行 从xml.etree导入元素树 def getStuff(xml_消息): message\u tree=ElementTree.fromstring(xml\u message

正在尝试使用ElementTree解析XML。我不知道如何处理像
这样的空标记。如果标记根本不存在,
.find()
返回
None
,一切正常。但是,对于
.find()
返回一些内容,随后调用
文本的尝试失败,出现错误:

TypeError: must be str, not NoneType
下面是失败的例子。它将无法解析行

从xml.etree导入元素树
def getStuff(xml_消息):
message\u tree=ElementTree.fromstring(xml\u message)
ns={'a':'http://www.example.org/a',
“b”:”http://www.example.org/b'}          
tls=message_tree.findall('.//b:tl',名称空间=ns)
结果,i=(0,)*2
对于tls中的tl:
i+=1
打印(“项目:+str(i))
mpa=tl.find(“b:mpa”,名称空间=ns)
如果mpa为无:
结果=结果+0
打印(“|-->为无,分配为0。”)
其他:
打印(“|-->是某种东西”)
#这就是事情变得非常糟糕的地方
打印(“|-->标记值:”+mpa.text)
结果=结果+整数(mpa.text)
返回结果
instr=”“”
e1
0010
"""
getStuff(仪表)
带有空标记的
,您的
mpa
变量是有效节点,因此它不是
None
,而是
mpa。text
None
,因为里面没有文本。因此,将字符串
“|-->标记值:
连接到
的尝试将失败,因为连接仅对两个字符串有效。相反,您可以使用格式化运算符将
None
格式化为
'None'
,并在以下行中添加一个条件,以避免将
mpa.text
转换为整数(如果它是
None
):

print(" |--> Tag Value: %s" % mpa.text)
if mpa.text is not None:
    result = result  + int(mpa.text)
通过上述更改,输出变为:

Item: 1
 |--> Is None, assigned 0.
Item: 2
 |--> Is Something
 |--> Tag Value: 0010
Item: 3
 |--> Is Something
 |--> Tag Value: None
Item: 1
 |--> Is None, assigned 0.
Item: 2
 |--> Is Something
 |--> Tag Value: 0010
Item: 3
 |--> Is Something
 |--> Tag Value: None