(1)、报错异常:
Traceback (most recent call last):
File "output_xml.py", line 8, in <module>
object_data=ET.ElementTree(file=data_file)
File "/usr/local/python35/lib/python3.6/xml/etree/ElementTree.py", line 557, in __init__
self.parse(file)
File "/usr/local/python35/lib/python3.6/xml/etree/ElementTree.py", line 597, in parse
self._root = parser._parse_whole(source)
ValueError: multi-byte encodings are not supported
(2)、xml源文件分析:
<?xml version="1.0" encoding="gbk"?>
<xml>
<FILE_STRUCTURE>
<Field>
<FieldNo>0</FieldNo>
<FieldName>RELATED_PROVINCE_NAME</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>RELATED_PROVINCE_NAME</FieldNameOther>
</Field>
<Field>
<FieldNo>1</FieldNo>
<FieldName>RELATED_CITY_NAME</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>RELATED_CITY_NAME</FieldNameOther>
</Field>
<Field>
<FieldNo>2</FieldNo>
<FieldName>RELATED_COUNTY_NAME</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>RELATED_COUNTY_NAME</FieldNameOther>
</Field>
<Field>
<FieldNo>3</FieldNo>
<FieldName>RELATED_SITE_CUID</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>RELATED_SITE_CUID</FieldNameOther>
</Field>
<Field>
<FieldNo>4</FieldNo>
<FieldName>RES_CODE</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>RES_CODE</FieldNameOther>
</Field>
<Field>
<FieldNo>5</FieldNo>
<FieldName>DEVICE_CODE</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>DEVICE_CODE</FieldNameOther>
</Field>
<Field>
<FieldNo>6</FieldNo>
<FieldName>TYPE</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>TYPE</FieldNameOther>
</Field>
<Field>
<FieldNo>7</FieldNo>
<FieldName>LABEL_CN</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>LABEL_CN</FieldNameOther>
</Field>
<Field>
<FieldNo>8</FieldNo>
<FieldName>SIGNAL_STA_NAME</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>SIGNAL_STA_NAME</FieldNameOther>
</Field>
<Field>
<FieldNo>9</FieldNo>
<FieldName>VALUE</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>VALUE</FieldNameOther>
</Field>
<Field>
<FieldNo>10</FieldNo>
<FieldName>REPORTED_TIME</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>REPORTED_TIME</FieldNameOther>
</Field>
<Field>
<FieldNo>11</FieldNo>
<FieldName>battery_capacity</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>battery_capacity</FieldNameOther>
</Field>
<Field>
<FieldNo>12</FieldNo>
<FieldName>dc_load_current</FieldName>
<FieldType>SQL_VARCHAR(255)</FieldType>
<FieldNameOther>dc_load_current</FieldNameOther>
</Field>
</FILE_STRUCTURE>
</xml>
(3)、第一次执行python脚本:
Traceback (most recent call last):
File "output_xml.py", line 8, in <module>
object_data=ET.ElementTree(file=data_file)
File "/usr/local/python35/lib/python3.6/xml/etree/ElementTree.py", line 557, in __init__
self.parse(file)
File "/usr/local/python35/lib/python3.6/xml/etree/ElementTree.py", line 597, in parse
self._root = parser._parse_whole(source)
ValueError: multi-byte encodings are not supported
(4)、修改xml的编码格式:
把源文件的<?xml version="1.0" encoding="gbk"?> 改成 <?xml version="1.0" encoding="utf-8"?>再试试执行脚本看看
(5)、第二次执行脚本:
<xml.etree.ElementTree.ElementTree object at 0x7fa5037e72b0>
根元素名: xml
根元素属性列表: {}
根元素属包含内容: {}
(6)、源码脚本:
#!/usr/bin/python3
#coding=gbk
data_file='X1550658004008726.xml'
import xml.etree.ElementTree as ET
object_data=ET.ElementTree(file=data_file)
print(object_data)
root=object_data.getroot()
print("根元素名:",root.tag)
print("根元素属性列表:",root.attrib)
print("根元素属包含内容:",root.attrib)