我正在尝试检查 XML 元素中文本信息的 MD5 哈希值,包括其所有子元素。这是与 hipay 服务交互所必需的。
def CheckMD5(tree):
m = hashlib.md5()
body = tree.find('result')
m.update(ET.tostring(ET.ElementTree(body).getroot(), method="html"))
return tree.find('md5content').text == m.hexdigest()
完整代码: https ://github.com/fabiosantoscode/python-hipay/blob/master/hipay.py#L566
我的问题是调用ElementTree.tostring
withmethod="xml"
会使 ElementTree 折叠空元素的结束标签,但使用method="html"
我会丢失大写。例子:
>>> ET.tostring(ET.fromstring('<rt><a></a><CapName>asd</CapName></rt>'), method='xml')
'<rt><a /><CapName>asd</CapName></rt>'
>>> ET.tostring(ET.fromstring('<rt><a></a><CapName>asd</CapName></rt>'), method='html')
'<rt><a></a><CapName>asd</capname></rt>'
>>>
笔记:
我根本不需要修改这个 XML 文档,我只需要提取<result>
元素的字符串数据。如果有其他图书馆允许我这样做,请指出。