我有一个XML文件,格式如下:
<commands>
<command name = "">
<data byte=""></data>
</command>
</commands>
<registers>
<register name = "">
<mask name =""></mask>
</registers>
在添加寄存器标签之前,我可以使用以下方式遍历文档:
for command_data_name in root.findall('command'):
if (command_data_name.get('major') == major_bits and command_data_name.get('minor') == minor_bits):
command_name = command_data_name.get('name')
但现在我得到了
xml.etree.ElementTree.ParseError: junk after document element.
显然是通过整合寄存器标签引起的。如果我想获取寄存器信息,这应该怎么看?
<registers>
<register name="Command">
<bits major_mask="0xFF00000000", right_shift="32", left_shift="0"></bits>
<bits minor_mask="0xFF0000000000", right_shift="40", left_shift="0"></bits>
<bits doorbell_mask="0x1000000000000", right_shift="48", left_shift="0"></bits>
<bits sequence_mask="0xF000000000000000", right_shift="63", left_shift="0"></bits>
</register>
<register name="Status">
<bits mb_comp_mask="0x1", right_shift="0", left_shift="0"></bits>
<bits nonce_mask="0x2", right_shift="1", left_shift="0"></bits>
<bits bos_mask="0xFF", right_shift="3", left_shift="0"></bits>
<bits status_code_mask="0xFF00", right_shift="12", left_shift="0"></bits>
</register>
</registers>
答案 0 :(得分:1)
每个XML文档应该只有1个根元素,但上面应该包含多个根元素的文档 - toString()
和<commands>
。来自wikipedia -
每个XML文档只有一个根元素。它包含所有其他元素,因此是所有其他元素的唯一父元素。 ROOT元素也称为PARENT元素。
这是造成错误的原因 -
<registers>
解决这个问题的最简单方法是将所有内容包装在单个根元素中,但真正的解决方法是考虑如何构建xml,并相应地构造它(以便它只有1个根)元素)。
另一个问题是xml中的xml.etree.ElementTree.ParseError: junk after document element
,你不需要在xml元素中使用逗号,删除它们就可以了。逗号示例 -
,