如何使用python中的ElementTree正确检查xml树中的元素?
我有以下xml如何使用python中的ElementTree正确检查xml树中的元素?,python,xml,elementtree,Python,Xml,Elementtree,我有以下xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <error> <displayMessage>Authentication Error</displayMessage> <message>Authentication Error: org.somewhere.auth.AuthenticationException: Invalid use
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<error>
<displayMessage>Authentication Error</displayMessage>
<message>Authentication Error: org.somewhere.auth.AuthenticationException: Invalid username or password
</message>
<code>2</code>
</error>
我试图检查元素身份验证错误
是否存在于错误
下。但是只要使用下面的代码
import requests
from xml.etree import ElementTree
r = requests.get(....)
root = ElementTree.fromstring(r.text)
print(root.findall('error'))
它返回一个空列表,我不理解。我希望得到一个元素,因为xml中有一个error
元素
我正准备试试这样的东西
if len(root.findall('error//Authentication Error'))>0:
print("auth error")
...
如何正确操作?在xmlstring中查找消息标记
r = requests.get(....)
root = ElementTree.fromstring(r.text)
if len([s.text for s in root.findall(".//message") if 'Authentication Error' in s.text ])>0:
print("auth error")
...
在xmlstring中查找消息标记
r = requests.get(....)
root = ElementTree.fromstring(r.text)
if len([s.text for s in root.findall(".//message") if 'Authentication Error' in s.text ])>0:
print("auth error")
...
这是因为
error
是root
尝试打印出根目录
:
因此,您可以找到displayMessage
,然后检查其文本:
any(item.text == "Authentication Error" for item in root.findall("displayMessage"))
如果至少有一个
身份验证错误
它将返回True
,这是因为错误
是根
尝试打印出根目录
:
因此,您可以找到displayMessage
,然后检查其文本:
any(item.text == "Authentication Error" for item in root.findall("displayMessage"))
如果至少有一个
身份验证错误
它将返回True
,我认为findall
不起作用,因为它只查找元素的子元素,而
是根。根本身指向元素错误,如果有多个,你肯定会得到一个解析错误,因为应该有一个根节点。我认为findall
不起作用,因为它只查找元素的子元素,而
是根。根本身指向元素错误,如果有多个,您肯定会得到一个解析错误,因为应该只有一个根节点