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

问题描述 投票:0回答:1

我从主机接收以下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)

我收到以下错误;

追踪(最近通话):在第10行中输入文件“ C:/ Users / llovely / PycharmProjects / Test / Libraries / test4 msg inc.py”树= ET.fromstring(xml)XML中的文件“ C:\ Users \ llovely \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ xml \ etree \ ElementTree.py”,第1320行parser.feed(文本)xml.etree.ElementTree.ParseError:格式不正确(无效令牌):第1行,第1列

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

python xml hex
1个回答
1
投票

如果确定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格式不正确,但是我认为那是一个错字。

© www.soinside.com 2019 - 2024. All rights reserved.