Python之xml学习笔记
XML处理模块
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,至今很多传统公司如金融行业的很多系统的接口还主要是xml。
xml的格式如下,就是通过<>节点来区别数据结构的:
- <?xml version="1.0"?>
- <data>
- <country name="Liechtenstein">
- <rank updated="yes">2</rank>
- <year updated_by="yunfei">2009</year>
- <gdppc>141100</gdppc>
- <neighbor direction="E" name="Austria" />
- <neighbor direction="W" name="Switzerland" />
- <info>
- <population>90</population>
- <size>960</size>
- </info>
- </country>
- <country name="Singapore">
- <rank updated="yes">5</rank>
- <year updated_by="yunfei">2012</year>
- <gdppc>59900</gdppc>
- <neighbor direction="N" name="Malaysia" />
- </country>
- <country name="Panama">
- <rank updated="yes">69</rank>
- <year updated_by="yunfei">2012</year>
- <gdppc>13600</gdppc>
- <neighbor direction="W" name="Costa Rica" />
- <neighbor direction="E" name="Colombia" />
- </country>
- </data>
xml协议在各个语言里的都 是支持的,在python中可以用以下模块操作xml :
- import xml.etree.ElementTree as ET #引用方法,重命名为ET
- tree = ET.parse("xmltest.xml")
- root = tree.getroot()
- #print(root)
- print(root.tag)#tag就是标签名<data>
- # 遍历xml文档
- for child in root:
- print(child.tag, child.attrib)
- for i in child:
- print(i.tag, i.text)
- # 只遍历year 节点
- for node in root.iter('year'):
- print(node.tag, node.text)
修改和删除xml文档内容:
- import xml.etree.ElementTree as ET
- tree = ET.parse("xmltest.xml")
- root = tree.getroot()
- # 修改
- for node in root.iter('year'):
- new_year = int(node.text) + 1#转为int型后加1
- node.text = str(new_year)
- node.set("updated_by", "yunfei")#加一个属性
- tree.write("xmltest.xml")
- # 删除node
- for country in root.findall('country'):#找出所有的country,循环country
- rank = int(country.find('rank').text)#找出country下的rank的text
- if rank > 50:
- root.remove(country)#移除此country
- tree.write('output.xml')#结果放在output.xml里
创建xml文件:
- import xml.etree.ElementTree as ET
- new_xml = ET.Element("personinfolist")
- personinfo = ET.SubElement(new_xml, "personinfo", attrib={"enrolled": "yes"})
- name = ET.SubElement(personinfo, "name")
- age = ET.SubElement(personinfo, "age", attrib={"checked": "no"})
- sex = ET.SubElement(personinfo, "sex")
- name.text='yunfei'
- age.text = '24'
- sex.text='男'
- personinfo2 = ET.SubElement(new_xml, "personinfo2", attrib={"enrolled": "no"})
- name = ET.SubElement(personinfo2, "name")
- age = ET.SubElement(personinfo2, "age")
- name.text='yuxia'
- age.text = '19'
- sex.text='女'
- et = ET.ElementTree(new_xml) # 生成文档对象
- et.write("test.xml", encoding="utf-8", xml_declaration=True)
- ET.dump(new_xml) # 打印生成的格式
注:这是一篇学习笔记,大家多多指教。
Python之xml学习笔记的更多相关文章
- XML学习笔记
XML学习笔记 第一部分:XML简介 我们经常可以听到XML.HTML.XHTML这些语言,后两者比较清楚,一直不是很明白XML是什么,这里做一个总结. XML(eXtensible Markup L ...
- Requests:Python HTTP Module学习笔记(一)(转)
Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...
- python网络爬虫学习笔记
python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...
- Python Built-in Function 学习笔记
Python Built-in Function 学习笔记 1. 匿名函数 1.1 什么是匿名函数 python允许使用lambda来创建一个匿名函数,匿名是因为他不需要以标准的方式来声明,比如def ...
- delphi操作xml学习笔记 之一 入门必读
Delphi 对XML的支持---TXMLDocument类 Delphi7 支持对XML文档的操作,可以通过TXMLDocument类来实现对XML文档的读写.可以利用TXMLDocum ...
- python网络爬虫学习笔记(二)BeautifulSoup库
Beautiful Soup库也称为beautiful4库.bs4库,它可用于解析HTML/XML,并将所有文件.字符串转换为'utf-8'编码.HTML/XML文档是与“标签树一一对应的.具体地说, ...
- XML学习笔记(四)-- 修饰XML文档的CSS
标签(空格分隔): 学习笔记 XML为存储结构化数据提供了强大的方法,但是它没有提供关于数据如何显示地信息,(数据的结构与数据表示无关).可以使用CSS来控制XML文档中各元素的呈现方式. CSS语法 ...
- XML学习笔记(三) -- Schema
标签(空格分隔): 学习笔记 Schema的格式 XML Schema文档是由元素.属性.命名空间和XML文档中的其他节点构成的. XML Schema有两种重要的Schema模型:Microsoft ...
- XML学习笔记(二)-- DTD格式规范
标签(空格分隔): 学习笔记 XML的一个主要目的是允许应用程序之间自由交换结构化的数据,因此要求XML文档具有一致的结构.业务逻辑和规则.可以定义一种模式来定义XML文档的结构,并借此验证XML文档 ...
随机推荐
- C#控件DataGridView笔记
1.列排序问题,点击列标题行时列会自动排序导致表格混乱.解决办法: 2.改变行高 改变列头行高 ColumnHeadersHeaderSize属性设为 EnableResizing ColumnHea ...
- 第一次C语言程序设计
C语言程序实验报告 实验项目: 1.字符与ASCII码 2.运算符与表达式的应用 3.顺序结构应用程序 4.数学函数的算法描述 5.鸡兔同笼的算法描述 6.确定坐标的算法描述 姓名:张时锋 实验地点: ...
- PHP 构造方法 __construct()和PHP 析构方法 __destruct()
PHP 构造方法 __construct() 允许在实例化一个类之前先执行构造方法. 构造方法 构造方法是类中的一个特殊方法.当使用 new 操作符创建一个类的实例时,构造方法将会自动调用,其名称必须 ...
- j2EE基础知识
感觉应付面试足够了 一.基本概念 1.1 WEB开发的相关知识 WEB用于表示Internet主机上供外界访问的资源. Intrenet上供外界访问Web资源分为 静态web资源:web页面中供人们浏 ...
- Linux /etc/hosts文件
均为转载 ———————— 1.主机名: 无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号. 公网:IP地址不方便记忆,所以 ...
- java第六章异常
异常: 程序运行一旦出现异常程序就会立刻结束不在向下运行 处理异常:在程序执行代码时,万一发生了异常,程序会按照处理的方法对一场进行处理办法,程序将继续执行 try-catch-finally-thr ...
- python爬虫的scrapy安装+pymongo的安装
我的:python2.7版本 32位 注意scrapy只支持2.7及以上的版本. 1.安装python 2.安装pip 安装pip就不赘述了,网上很多教学 pip安装时要注意更新,如果pip版本 ...
- airTest 应用到项目并优化
之前已经介绍了airTest的原理,该文主要指引大家能够将airTest框架应用到具体的测试项目当中去. 首先要考虑的是: 1. 你是用airTest 去做什么自动化 (android, ios, w ...
- 完成一个Laravel项目的过程
1.分析项目,找出项目的元素并进行建模(navicat 该工具还可以到处sql语句) 建立关系 2.安装Laravel(使用composer来安装,如果没有的话先安装composer) 3.配置虚拟主 ...
- 提交一个变量或数组到另一个jsp页面
注意一:提交一个变量到另一个jsp页面,用hidden的input 另一个页面用request.getParameter();获取 注意二:提交一个数组到另一个页面,可以用相同的input的n ...