最近写程序需要用到xml操作,看了看python.org上面的几个xml类库,还是一头雾水,感觉太学术化了,都那么吝惜写几个例子。所以自己整理了一下,算是个小总结,和大家分享一下吧。

对于简单的操作xml文件来说,xml.dom.minidom足以,可以写可以读的。

先给出示例程序,然后简单注释一下

1.示例程序:

-----------------------------------------------------------------------------------------------------------------

1 #Author: Nonove. nonove[at]msn[dot]com

2 #XML simple operation Examples and functions

3 #encoding = gbk

4

5 from xml.dom importminidom6 importcodecs7

8

9 def write_xml_file(path, xmlDom, option = {'encoding':'utf-8'}):10 """Generate xml file with writer11 params:12 string path xml file path13 Dom xmlDom xml dom14 dictionary option writer option {'indent': '', 'addindent':' ', 'newl':'\n', 'encoding':'utf-8'}15 returns:16 bool success return True else False17 """

18 defaultOption = {'indent': '', 'addindent':' ', 'newl':'\n', 'encoding':'utf-8'}19 for k, v indefaultOption.iteritems():20 if k not inoption:21 option[k] =v22

23 try:24 f=file(path, 'wb')25 writer = codecs.lookup(option['encoding'])[3](f)26 xmlDom.writexml(writer, encoding = option['encoding'], indent = option['indent'], \27 addindent = option['addindent'], newl = option['newl'])28 writer.close()29 returnTrue30 except:31 print('Write xml file failed.... file:{0}'.format(path))32 returnFalse33

34

35

36 if __name__ == "__main__":37 #Create a xml dom

38 xmlDom =minidom.Document()39 nonove = xmlDom.createElement('nonove')40 xmlDom.appendChild(nonove)41

42 #Generate a xml dom

43 #Create child node, textnode, set attribute, appendChild

44 for i in range(3):45 node = xmlDom.createElement('node')46 node.setAttribute('id', str(i))47 node.setAttribute('status', 'alive')48 textNode = xmlDom.createTextNode('node value' +str(i))49 node.appendChild(textNode)50 nonove.appendChild(node)51

52 #Print xml dom

53 #Print simple xml

54 ## print(xmlDom.toxml())

55 #Print pretty xml

56 print('\n' + xmlDom.toprettyxml(indent=' '))57

58 #Save xml file with encoding utf-8

59 option = {'indent': '', 'addindent':'', 'newl':'', 'encoding':'utf-8'}60 write_xml_file('nonove.xml', xmlDom, option)61

62 #Load xml dom from file

63 xmlDom = minidom.parse('nonove.xml')64 #Get nonove node

65 nonove = xmlDom.getElementsByTagName('nonove')[0]66 #Get node list

67 nodes = xmlDom.getElementsByTagName('node')68 for node innodes:69 #Get node attribute id

70 nodeid = node.getAttribute('id')71 #Print node id and textnode value

72 print('Node id: {0} textnode value: {1}'.format(nodeid, node.firstChild.nodeValue))73

74 for node innodes:75 #Set attribute or remove attribute

76 node.setAttribute('author', 'nonove')77 node.removeAttribute('status')78

79 #Remove node 1

80 nonove.removeChild(nodes[1])81

82 print('\n' + xmlDom.toprettyxml(indent=' '))

------------------------------------------------------------------------------------------------------------------

2.注释:

#读取xml方式有两种 从文件 和 从字符串

xmlDom =

minidom.parse('nonove.xml')

xmlDom = minidom.parseString(xmlstring)

#创建xml dom

主要是用到了minidom.Document()

xmlDom =

minidom.Document()

#创建/删除节点

node =

xmlDom.createElement('node')

root.removeChild(node)

#创建Text Node,获取 node value

textnode =

xmlDom.createTextNode('set value here')

value = textnode.nodeValue

#添加/删除node属性node.setAttribute('author',

'nonove')

node.removeAttribute('author')

#保存xml文件用到了codecs类库和writexml()函数,例子里面我写了个函数,把略显复杂的操作封装了一下,以后可以方便重用。

write_xml_file(path, xmlDom,

option)path:xml文件保存地址

xmlDom: xml document

option:

是dictionary类型变量,包括缩进和编码等,这个可以方便的把xml文件按utf-8或者gb2312保存,方便。

3.备注:

关于CharacterData的解析不出来的问题解决办法:标签和两面的节点不能够有间隔字符,否则就解析为空。

就先总结了这么多,有什么不对的地方或者更好的方法请赐教啊……

python读取xml编码gb2312_【转】python XML 操作总结(创建、保存和删除,支持utf-8和gb2312)...相关推荐

  1. Python读取文件编码及内容

    Python读取文件编码及内容 最近做一个项目,需要读取文件内容,但是文件的编码方式有可能都不一样.有的使用GBK,有的使用UTF8.所以在不正确读取的时候会出现如下错误: UnicodeDecode ...

  2. Python 读取文本文件编码错误解决方案(未知文本文件编码情况下解决方案)

    Python 读取文本文件编码错误解决方案(未知文本文件编码情况下解决方案) 参考文章: (1)Python 读取文本文件编码错误解决方案(未知文本文件编码情况下解决方案) (2)https://ww ...

  3. python读取sas数据集_利用Python获取SAS和R自带数据集

    图:北京-奥森公园-2018年4月 无论是SAS.R还是Python,本身都自带一些数据集,对于初学者来说,可以通过这些自带的小数据集进行编程练习,无疑是非常方便的.SAS.R作为统计分析软件,本身自 ...

  4. python xmlns 解析_使用python读取标记中包含xmlns的XML文件

    我试图从xml文件中读取一个元素来添加新元素. 我试图找到的标签包含xmlns. 它看起来像这样: 我的python代码如下所示: import xml.etree.ElementTree as xm ...

  5. python中读取文件编码_[转载]python中使用文件的读取编码问题

    原文链接:https://www.cnblogs.com/qianboping/p/6524420.html 今天想写个程序合并文件的,以前一直觉得python的编码解码好烦,只要处理文件合并之类的都 ...

  6. python读取文件编码错误_关于python 读取txt文件出现编码问题:

    python 读取txt文件出现编码问题:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position 5: invalid ...

  7. python读取文件编码报错解决

    项目场景: python读取文件报错解决 问题一:UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 问题二:Unic ...

  8. python读取文件第n行-python读取文件第n行

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. pos = pos - 1 try: f.seek(pos, 2) #从 ...

  9. python读取txt文件为dataframe,python批量读取txt文件为DataFrame

    我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...

最新文章

  1. Haproxy+Keepalived实现网站双主高可用-理论篇
  2. HikariCP为什么自己造了一个FastList?
  3. Android LaunchMode
  4. EOS Dawn 1.0
  5. ob_clean与gzip的bug
  6. 过分了,这样阅读Datasheet(数据手册)合适吗?
  7. android选择头像弹窗,Android App开发常用功能之用户头像选择-Go语言中文社区
  8. KAFKA 最新版 单机安装、配置、部署(linux环境)
  9. 解决EF使用context.Database.SqlQuery时NotMapped属性列为空null的问题(转载)
  10. 20200616:力扣193周周赛上
  11. 项目管理表格模板/实用表格-WBS及WBS字典
  12. MobiCom2019几篇有意思的文章
  13. LAZARUS APT利用恶意word文档攻击MAC用户
  14. 计算机二级MSoffice
  15. 项目经理面试题pmp面试题项目管理面试题
  16. 通过Dockerfile创建docker镜像
  17. 我的世界服务器怎么修改唱片,我的世界怎么修改唱片唱片音乐修改教程
  18. mysql嵌套查询效率低,连接查询代替嵌套查询提高select效率
  19. 程序员:工作8年,存款100W,回老家买两套房子,网友:醒醒吧
  20. STM32F103的JTAG和SWD接口被禁用,无法下载程序 - 解决办法(亲试可用)

热门文章

  1. java里有位移吗_Java 中位移运算符 ,,
  2. 晶振两端的谐振电容有特殊要求吗_“吃瓜群众”也能秒懂的晶振电路原理
  3. php执行函数吗_php函数system
  4. pytorch学习笔记(十二):权重衰减
  5. AcWing 1055. 股票买卖 II
  6. PAT 乙级1019 数字黑洞
  7. 关于Cohen-Sutherland算法和Liang-Barsky算法
  8. POJ - 1704 Georgia and Bob
  9. JQuery怎么知道一个元素是否隐藏或显示How do you test if something is hidden in jQuery?
  10. vue 结合swiper插件实现广告公告上下滚动的效果