python 处理解析xml时候报错问题
(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)
- 移植Windows自宿主WCF服务到Linux/Mono2.8
- IISWeb应用防火墙WAF
- WordPress 开发之让浏览器自动加载最新的CSS、JS文件(免刷新缓存)
- 在Windows 7无法通过UNC路径连接到共享文件夹的解决方法
- SQL Sever索引
- 使用SQL Server Management Studio 2008 将数据库里的数据导成脚本
- jquery mobile 移动web(5)
- [C#6] 1-using static
- WordPress 中的 Debug 模式(调试模式)
- Windows Server 2008 R2 Server Core 的 Microsoft .NET Framework 4安装程序
- [C#6] 4-string 插值
- 使用API Key验证WCF Data Service
- WordPress By Example:一个WordPress 主题搜索引擎
- jquery mobile 移动web(4)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- shell脚本快速入门之-----正则三剑客之二sed用法大全!!!
- JSP中的Cookie
- 傅里叶变换
- shell脚本快速入门之-----shell脚本练习100例!!!
- java监听器
- shell脚本快速入门之-----函数
- shell脚本快速入门之-----循环(for、while、until)
- ThreadPoolExecutor系列三——ThreadPoolExecutor 源码解析
- shell脚本快速入门之-----数组
- JSTL
- shell脚本快速入门之-----正则三剑客之三awk用法大全!!!
- 一起来看看1stOpt到底有多强大?
- shell脚本快速入门之-----深入介绍Expect免交互
- shell脚本快速入门之-----Here document使用方法总结
- spring框架应用系列一:annotation-config自动装配