如何解决格式不正确无效令牌
尝试从 netcat 命令返回的 xml 中创建 josn,返回的 xml 如下所示:
(b'<?xml version="1.0" encoding="UTF-8"?>\n<Reply Version="2020.005.021" Status="Passed">\n\t<FileDetails FileCount.DWD="2" NextFrom.QWD="608518" ExitCode.DWD="0">\n\t\t<File Guid="cbcb8339_Feed_ PL World wk6.mxf" VolumeName="000121L5" ArchiveNumber.DWD="7" VolumeGroup="MAIN" FileSize.QWD="36114564233" ArchiveDate="2013/2/14 20:44:50" LastRestoreDate="2018/5/2 12:32:24" RestoreCount.DWD="2" Status="OFFLINE"/>\n\t\t<File Guid="cbcb8339_Feed_ PL World wk6.mxf" VolumeName="000037L7" ArchiveNumber.DWD="31" VolumeGroup="Fodbold_L7" FileSize.QWD="36114564233" ChangerDetail="3 IBM-TS3510" ChangerPosition="Slot 99" ArchiveDate="2018/5/7 08:23:18" LastRestoreDate="2021/4/2 18:16:35" RestoreCount.DWD="3" Status="ONLINE"/>\n\t</FileDetails>\n</Reply>\x00',None)
假设 bytesstr
是上面的 xml,这里是我的代码:
bytesstr = fg_api_cmd.communicate()[0]
xmlstr = bytesstr.decode('utf-8')
import xml.etree.ElementTree as ET
root = ET.fromstring(xmlstr)
for element in root.iter("*"):
print(element)
当我运行上面的代码时,出现以下错误:
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 7,column 8
但是,如果我打印出 xmlstr
,输出看起来不错:
<?xml version="1.0" encoding="UTF-8"?>
<Reply Version="2020.005.021" Status="Passed">
<FileDetails FileCount.DWD="2" NextFrom.QWD="608518" ExitCode.DWD="0">
<File Guid="cbcb8339_Feed_ PL World wk6.mxf" VolumeName="000121L5" ArchiveNumber.DWD="7" VolumeGroup="MAIN" FileSize.QWD="36114564233" ArchiveDate="2013/2/14 20:44:50" LastRestoreDate="2018/5/2 12:32:24" RestoreCount.DWD="2" Status="OFFLINE"/>
<File Guid="cbcb8339_Feed_ PL World wk6.mxf" VolumeName="000037L7" ArchiveNumber.DWD="31" VolumeGroup="Fodbold_L7" FileSize.QWD="36114564233" ChangerDetail="3 IBM-TS3510" ChangerPosition="Slot 99" ArchiveDate="2018/5/7 08:23:18" LastRestoreDate="2021/4/2 18:16:35" RestoreCount.DWD="3" Status="ONLINE"/>
</FileDetails>
</Reply>
如果我将 xml 作为这样的字符串传递,它也可以工作:
xmlstr = '<?xml version="1.0" encoding="UTF-8"?><Reply Version="2020.005.021" Status="Passed"><FileDetails FileCount.DWD="2" NextFrom.QWD="608518" ExitCode.DWD="0"><File Guid="cbcb8339_Feed_ PL World wk6.mxf" VolumeName="000121L5" ArchiveNumber.DWD="7" VolumeGroup="MAIN" FileSize.QWD="36114564233" ArchiveDate="2013/2/14 20:44:50" LastRestoreDate="2018/5/2 12:32:24" RestoreCount.DWD="2" Status="OFFLINE"/><File Guid="cbcb8339_Feed_ PL World wk6.mxf" VolumeName="000037L7" ArchiveNumber.DWD="31" VolumeGroup="Fodbold_L7" FileSize.QWD="36114564233" ChangerDetail="3 IBM-TS3510" ChangerPosition="Slot 99" ArchiveDate="2018/5/7 08:23:18" LastRestoreDate="2021/4/2 18:16:35" RestoreCount.DWD="3" Status="ONLINE"/></FileDetails></Reply>'
import xml.etree.ElementTree as ET
root = ET.fromstring(xmlstr)
for element in root.iter("*"):
print(element)
<Element 'Reply' at 0x10bfa3cc0>
<Element 'FileDetails' at 0x10d0160e0>
<Element 'File' at 0x10d016310>
<Element 'File' at 0x10d016450>
我做错了什么吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。