如何使用 Python 解析十六进制 XML?

How to parse Hex framed XML using Python?

我从主机收到以下 xml 消息(下面代码中的 data_back),我需要对其进行解析以获取 VersionRequest。

b'\x02
<H_VersionRequest>
<ClientId>Machine - 123</ClientId>
<VersionRequest>1.2.3</VersionRequest>
<H_VersionRequest>
\x03'

我写了下面的代码;

import xml.etree.ElementTree as ET
# data received from host is saved to data_back
xml = str(data_back)
tree = ET.fromstring(xml)
root = tree.getroot()
print(root)

我收到以下错误;

回溯(最后一次调用): 文件 "C:/Users/llovely/PycharmProjects/Test/Libraries/test4 msg inc.py",第 10 行,位于 树 = ET.fromstring(xml) 文件 "C:\Users\llovely\AppData\Local\Programs\Python\Python38-32\lib\xml\etree\ElementTree.py",第 1320 行,在 XML 中 parser.feed(文字) xml.etree.ElementTree.ParseError:格式不正确(无效标记):第 1 行,第 1 列

有人可以建议我如何从 xml 的这种格式中提取数据吗?

如果你确定XML和两端只有一个字节,那么就把字符串的其余部分作为一个切片:

import xml.etree.ElementTree as ET
# Decode from bytes to str, don;t call str on bytes
xml = data_back.decode()[1:-1]
tree = ET.fromstring(xml)
root = tree.getroot()
print(root)

请注意,问题中的 xml 格式不正确,但我认为这是一个错字。