如何使用 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 格式不正确,但我认为这是一个错字。
我从主机收到以下 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 格式不正确,但我认为这是一个错字。