使用Python中的ElementTree解析XML文件。
这是文件:
<?xml version='1.0' encoding='utf-8'?>
<Device fqdm="DESKTOP-4OB3072">
<IP>192.168.203.1</IP>
<MAC>00:00:00:00:00:00</MAC>
</Device>
我在尝试解析文件并检索'fqdm'属性的值时收到错误(如下)。
“xml.etree.ElementTree.ParseError:文档元素之后的垃圾:第2行,第90列”
这是解析代码(请忽略愚蠢的文件处理,它将被更改):
with open('received_file.xml', 'a+') as f:
while True:
data = conn.recv(BUFFER_SIZE)
print data
if not data:
f.close()
break
f.write(data)
f.close()
g = open('received_file.xml', 'r+')
tree = ET.parse(g)
root = tree.getroot()
print root
test = root.find('./Device').attrib['fqdm']
print test
sock.close()
答案 0 :(得分:0)
试试这个:
with open('received_file.xml', 'a+') as f:
while True:
data = conn.recv(BUFFER_SIZE)
print data
if not data:
f.close()
break
f.write(data)
f.close()
g = open('received_file.xml', 'r+')
tree = ET.parse(g)
root = tree.getroot()
attributes = root.attrib
print root
test = attributes['fqdm']
print test
sock.close()
答案 1 :(得分:0)
yourTag.attrib.get("the_attribute")
答案 2 :(得分:0)
您的解析错误位于第90列,但您共享的xml代码段只有32列。如果此文件由套接字对象生成,则可能在第2行中的有效xml后面有额外的不可打印字符。可能需要更新创建此文件的代码以正确终止它接收的行中的字符串。