1.xml协议

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml。

xml的格式如下,就是通过<>节点来区别数据结构的:

  1. <?xml version="1.0"?>
  2. <data>
  3. <country name="Liechtenstein">
  4. <rank updated="yes">2</rank>
  5. <year>2008</year>
  6. <gdppc>141100</gdppc>
  7. <neighbor name="Austria" direction="E"/>
  8. <neighbor name="Switzerland" direction="W"/>
  9. </country>
  10. <country name="Singapore">
  11. <rank updated="yes">5</rank>
  12. <year>2011</year>
  13. <gdppc>59900</gdppc>
  14. <neighbor name="Malaysia" direction="N"/>
  15. </country>
  16. <country name="Panama">
  17. <rank updated="yes">69</rank>
  18. <year>2011</year>
  19. <gdppc>13600</gdppc>
  20. <neighbor name="Costa Rica" direction="W"/>
  21. <neighbor name="Colombia" direction="E"/>
  22. </country>
  23. </data>

2、遍历 xml

协议在各个语言里的都 是支持的,在python中可以用以下模块操作xml   

  1. import xml.etree.ElementTree as ET
  2.  
  3. tree = ET.parse("xmltest.xml")
  4. root = tree.getroot()
  5. print(root.tag)
  6.  
  7. #遍历xml文档
  8. for child in root:
  9. print(child.tag, child.attrib)
  10. for i in child:
  11. print(i.tag,i.text)
  12.  
  13. #只遍历year 节点
  14. for node in root.iter('year'):
  15. print(node.tag,node.text)

  1. Traceback (most recent call last):
  2. File "<frozen importlib._bootstrap>", line 2218, in _find_and_load_unlocked
  3. AttributeError: 'module' object has no attribute '__path__'
  4.  
  5. During handling of the above exception, another exception occurred:
  6.  
  7. Traceback (most recent call last):
  8. File "C:/PycharmProjects/Luffy_project/21天入门/xml/xml.py", line 1, in <module>
  9. import xml.etree.ElementTree as ET
  10. File "C:\PycharmProjects\Luffy_project\21天入门\xml\xml.py", line 1, in <module>
  11. import xml.etree.ElementTree as ET
  12. ImportError: No module named 'xml.etree'; 'xml' is not a package

  

3.修改和删除xml文档内容

  1. import xml.etree.ElementTree as ET
  2.  
  3. tree = ET.parse("xmltest.xml")
  4. root = tree.getroot()
  5.  
  6. #修改
  7. for node in root.iter('year'):
  8. new_year = int(node.text) + 1
  9. node.text = str(new_year)
  10. node.set("updated","yes")
  11.  
  12. tree.write("xmltest.xml")
  13.  
  14. #删除node
  15. for country in root.findall('country'):
  16. rank = int(country.find('rank').text)
  17. if rank > 50:
  18. root.remove(country)
  19.  
  20. tree.write('output.xml')

4.自己创建xml文档

  1. import xml.etree.ElementTree as ET
  2.  
  3. new_xml = ET.Element("namelist")
  4. name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})
  5. age = ET.SubElement(name,"age",attrib={"checked":"no"})
  6. sex = ET.SubElement(name,"sex")
  7. sex.text = ''
  8. name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})
  9. age = ET.SubElement(name2,"age")
  10. age.text = ''
  11.  
  12. et = ET.ElementTree(new_xml) #生成文档对象
  13. et.write("test.xml", encoding="utf-8",xml_declaration=True)
  14.  
  15. ET.dump(new_xml) #打印生成的格式

19-[模块]-xml的更多相关文章

  1. python configparse模块&xml模块

    configparse模块 用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser. [DEFAULT] serveraliveinterval = ...

  2. python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

    python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess ...

  3. python 解析XML python模块xml.dom解析xml实例代码

    分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...

  4. 小白的Python之路 day5 模块XML特点和用法

    模块XML的特点和用法 一.简介 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今 ...

  5. python-常用模块xml、shelve、configparser、hashlib

    一.shelve模块 shelve模块也是用来序列化的. 使用方法: 1.open 2.读写 3.close import shelve # 序列化 sl = shelve.open('shlvete ...

  6. Python模块——xml

    xml模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单, 不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行 ...

  7. 19 模块之shelve xml haslib configparser

    shelve 什么是shelve模块 也是一种序列化方式使用方法 1.opne 2.读写 3.close特点:使用方法比较简单 提供一个文件名字就可以开始读写 读写的方法和字典一致 你可以把它当成带有 ...

  8. s14 第5天 时间模块 随机模块 String模块 shutil模块(文件操作) 文件压缩(zipfile和tarfile)shelve模块 XML模块 ConfigParser配置文件操作模块 hashlib散列模块 Subprocess模块(调用shell) logging模块 正则表达式模块 r字符串和转译

    时间模块 time datatime time.clock(2.7) time.process_time(3.3) 测量处理器运算时间,不包括sleep时间 time.altzone 返回与UTC时间 ...

  9. json,pickle,shelve模块,xml处理模块

    常用模块学习—序列化模块详解 什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化? 你打游戏过程 ...

  10. python笔记7 logging模块 hashlib模块 异常处理 datetime模块 shutil模块 xml模块(了解)

    logging模块 日志就是记录一些信息,方便查询或者辅助开发 记录文件,显示屏幕 低配日志, 只能写入文件或者屏幕输出 屏幕输出 import logging logging.debug('调试模式 ...

随机推荐

  1. [控件] LabelView

    LabelView 此LabelView是用来将Label显示在固定的View上的,需要计算Label的高度与宽度. 源码: NSString+StringHeight.h 与 NSString+St ...

  2. lua调用c++函数返回值作用

    2015/05/28 lua调用c++接口,返回给lua函数的是压入栈的内容,可以有多个返回值.但是c++接口本身也是有返回值的,这个返回值也非常的重要,会决定最后返回到lua函数的值的个数. (1) ...

  3. C++:sprintf()的用法(转)

    转:http://blog.csdn.net/masikkk/article/details/5634886 更多:http://blog.csdn.net/zjuwispersure/article ...

  4. RAC数据库的RMAN备份异机恢复到单节点数据库

    1.首先在rac环境用rman备份数据库.[oracle@rac1 admin]$ rman target /run{allocate channel c1 device type disk conn ...

  5. VS2015 无法启动IIS Express Web服务器(已解决)

    VS2015 无法启动IIS Express Web服务器 首先说一下我遇到问题的情况.这个项目是在公司电脑创建的,运行一直是正常的.今天把项目拷贝回来做. 可是到自己的电脑上,运行就提示 无法启动I ...

  6. Java8新特性 -- Lambda 方法引用和构造器引用

    一. 方法引用: 若Lambda体中的内容有方法已经实现了,我们可以使用“方法引用” 要求 方法的参数和返回值类型 和 函数式接口中的参数类型和返回值类型保持一致. 主要有三种语法格式: 对象 :: ...

  7. 【bzoj 3252】攻略

    题意 我们想到一个贪心,就是每次找到根路径前缀和最大的一个点,取走这条路径,同时把这条路径上的点权变成\(0\) 正确性显然 进一步发现我们需要从树上选择\(m\)条链使得链的总和最大 于是我们考虑换 ...

  8. 微信小程序 动态加载class

    <view class=' {{topid==1?"top": "untop"}}' >

  9. Day4 JavaScript(二)dom操作

    dom(文档对象模型) 文档结构 文档加载,转换为文档对象模型.将所有的标签,文本,属性转换为dom节点,形成一棵dom树. 标签,元素,节点: <a> 标签开始到结束的部分 标签,文本, ...

  10. ZOJ 4103 浙江省第16届大学生程序设计竞赛 D题 Traveler 构造

    这个题,正赛的时候也没有过,不过其实已经有了正确的解法,可惜时间不多了,就没有去尝试. 题意是有n个点,i点能通向i-1,然后i和i*2.i*2+1互通. 请你构造一种路径从1能走完所有点,并且不重复 ...