XML处理模块

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,至今很多传统公司如金融行业的很多系统的接口还主要是xml。

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

  1. <?xml version="1.0"?>
  2. <data>
  3. <country name="Liechtenstein">
  4. <rank updated="yes">2</rank>
  5. <year updated_by="yunfei">2009</year>
  6. <gdppc>141100</gdppc>
  7. <neighbor direction="E" name="Austria" />
  8. <neighbor direction="W" name="Switzerland" />
  9. <info>
  10. <population>90</population>
  11. <size>960</size>
  12. </info>
  13. </country>
  14. <country name="Singapore">
  15. <rank updated="yes">5</rank>
  16. <year updated_by="yunfei">2012</year>
  17. <gdppc>59900</gdppc>
  18. <neighbor direction="N" name="Malaysia" />
  19. </country>
  20. <country name="Panama">
  21. <rank updated="yes">69</rank>
  22. <year updated_by="yunfei">2012</year>
  23. <gdppc>13600</gdppc>
  24. <neighbor direction="W" name="Costa Rica" />
  25. <neighbor direction="E" name="Colombia" />
  26. </country>
  27. </data>

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

  1. import xml.etree.ElementTree as ET #引用方法,重命名为ET
  2.  
  3. tree = ET.parse("xmltest.xml")
  4. root = tree.getroot()
  5. #print(root)
  6. print(root.tag)#tag就是标签名<data>
  7.  
  8. # 遍历xml文档
  9. for child in root:
  10. print(child.tag, child.attrib)
  11. for i in child:
  12. print(i.tag, i.text)
  13.  
  14. # 只遍历year 节点
  15. for node in root.iter('year'):
  16. print(node.tag, node.text)

修改和删除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#转为int型后加1
  9. node.text = str(new_year)
  10. node.set("updated_by", "yunfei")#加一个属性
  11.  
  12. tree.write("xmltest.xml")
  13.  
  14. # 删除node
  15. for country in root.findall('country'):#找出所有的country,循环country
  16. rank = int(country.find('rank').text)#找出country下的ranktext
  17. if rank > 50:
  18. root.remove(country)#移除此country
  19.  
  20. tree.write('output.xml')#结果放在output.xml

创建xml文件:

  1. import xml.etree.ElementTree as ET
  2.  
  3. new_xml = ET.Element("personinfolist")
  4. personinfo = ET.SubElement(new_xml, "personinfo", attrib={"enrolled": "yes"})
  5. name = ET.SubElement(personinfo, "name")
  6. age = ET.SubElement(personinfo, "age", attrib={"checked": "no"})
  7. sex = ET.SubElement(personinfo, "sex")
  8. name.text='yunfei'
  9. age.text = '24'
  10. sex.text='男'
  11.  
  12. personinfo2 = ET.SubElement(new_xml, "personinfo2", attrib={"enrolled": "no"})
  13. name = ET.SubElement(personinfo2, "name")
  14. age = ET.SubElement(personinfo2, "age")
  15. name.text='yuxia'
  16. age.text = '19'
  17. sex.text='女'
  18.  
  19. et = ET.ElementTree(new_xml) # 生成文档对象
  20. et.write("test.xml", encoding="utf-8", xml_declaration=True)
  21.  
  22. ET.dump(new_xml) # 打印生成的格式

注:这是一篇学习笔记,大家多多指教。

Python之xml学习笔记的更多相关文章

  1. XML学习笔记

    XML学习笔记 第一部分:XML简介 我们经常可以听到XML.HTML.XHTML这些语言,后两者比较清楚,一直不是很明白XML是什么,这里做一个总结. XML(eXtensible Markup L ...

  2. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  3. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

  4. Python Built-in Function 学习笔记

    Python Built-in Function 学习笔记 1. 匿名函数 1.1 什么是匿名函数 python允许使用lambda来创建一个匿名函数,匿名是因为他不需要以标准的方式来声明,比如def ...

  5. delphi操作xml学习笔记 之一 入门必读

    Delphi 对XML的支持---TXMLDocument类       Delphi7 支持对XML文档的操作,可以通过TXMLDocument类来实现对XML文档的读写.可以利用TXMLDocum ...

  6. python网络爬虫学习笔记(二)BeautifulSoup库

    Beautiful Soup库也称为beautiful4库.bs4库,它可用于解析HTML/XML,并将所有文件.字符串转换为'utf-8'编码.HTML/XML文档是与“标签树一一对应的.具体地说, ...

  7. XML学习笔记(四)-- 修饰XML文档的CSS

    标签(空格分隔): 学习笔记 XML为存储结构化数据提供了强大的方法,但是它没有提供关于数据如何显示地信息,(数据的结构与数据表示无关).可以使用CSS来控制XML文档中各元素的呈现方式. CSS语法 ...

  8. XML学习笔记(三) -- Schema

    标签(空格分隔): 学习笔记 Schema的格式 XML Schema文档是由元素.属性.命名空间和XML文档中的其他节点构成的. XML Schema有两种重要的Schema模型:Microsoft ...

  9. XML学习笔记(二)-- DTD格式规范

    标签(空格分隔): 学习笔记 XML的一个主要目的是允许应用程序之间自由交换结构化的数据,因此要求XML文档具有一致的结构.业务逻辑和规则.可以定义一种模式来定义XML文档的结构,并借此验证XML文档 ...

随机推荐

  1. C#控件DataGridView笔记

    1.列排序问题,点击列标题行时列会自动排序导致表格混乱.解决办法: 2.改变行高 改变列头行高 ColumnHeadersHeaderSize属性设为 EnableResizing ColumnHea ...

  2. 第一次C语言程序设计

    C语言程序实验报告 实验项目: 1.字符与ASCII码 2.运算符与表达式的应用 3.顺序结构应用程序 4.数学函数的算法描述 5.鸡兔同笼的算法描述 6.确定坐标的算法描述 姓名:张时锋 实验地点: ...

  3. PHP 构造方法 __construct()和PHP 析构方法 __destruct()

    PHP 构造方法 __construct() 允许在实例化一个类之前先执行构造方法. 构造方法 构造方法是类中的一个特殊方法.当使用 new 操作符创建一个类的实例时,构造方法将会自动调用,其名称必须 ...

  4. j2EE基础知识

    感觉应付面试足够了 一.基本概念 1.1 WEB开发的相关知识 WEB用于表示Internet主机上供外界访问的资源. Intrenet上供外界访问Web资源分为 静态web资源:web页面中供人们浏 ...

  5. Linux /etc/hosts文件

    均为转载 ———————— 1.主机名: 无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号. 公网:IP地址不方便记忆,所以 ...

  6. java第六章异常

    异常: 程序运行一旦出现异常程序就会立刻结束不在向下运行 处理异常:在程序执行代码时,万一发生了异常,程序会按照处理的方法对一场进行处理办法,程序将继续执行 try-catch-finally-thr ...

  7. python爬虫的scrapy安装+pymongo的安装

    我的:python2.7版本    32位 注意scrapy只支持2.7及以上的版本. 1.安装python 2.安装pip 安装pip就不赘述了,网上很多教学 pip安装时要注意更新,如果pip版本 ...

  8. airTest 应用到项目并优化

    之前已经介绍了airTest的原理,该文主要指引大家能够将airTest框架应用到具体的测试项目当中去. 首先要考虑的是: 1. 你是用airTest 去做什么自动化 (android, ios, w ...

  9. 完成一个Laravel项目的过程

    1.分析项目,找出项目的元素并进行建模(navicat 该工具还可以到处sql语句) 建立关系 2.安装Laravel(使用composer来安装,如果没有的话先安装composer) 3.配置虚拟主 ...

  10. 提交一个变量或数组到另一个jsp页面

        注意一:提交一个变量到另一个jsp页面,用hidden的input 另一个页面用request.getParameter();获取 注意二:提交一个数组到另一个页面,可以用相同的input的n ...