常用模块(xml)

XML(可扩展性标记语言)是一种非常常用的文件类型,主要用于存储和传输数据。在编程中,对XML的操作也非常常见。

本文根据python库文档中的xml.etree.ElementTree类来进行介绍XML的解析:https://docs.python.org/3.5/library/xml.etree.elementtree.html

BTW,xml.etree.cElementTree模块从3.3以后就被弃用了.

XML格式

首先,来看一下XML所包含的元素类型

1. 标签 <tag>

2. 属性 <tag  name="attribute">

3. 数据 <data>1<data>

例如 xml段:

<?xml version="1.0"?>
<data>
    <country name="Liechtenstein">
        <rank>1</rank>
        <year>2008</year>
        <gdppc>141100</gdppc>
        <neighbor name="Austria" direction="E"/>
        <neighbor name="Switzerland" direction="W"/>
    </country>
    <country name="Singapore">
        <rank>4</rank>
        <year>2011</year>
        <gdppc>59900</gdppc>
        <neighbor name="Malaysia" direction="N"/>
    </country>
    <country name="Panama">
        <rank>68</rank>
        <year>2011</year>
        <gdppc>13600</gdppc>
        <neighbor name="Costa Rica" direction="W"/>
        <neighbor name="Colombia" direction="E"/>
    </country>
</data>

XML操作

  • 读取

#从变量读取,参数为XML段,返回的是一个根Element对象
root = ET.fromstring(country_data_as_string)

#从xml文件中读取,用getroot获取根节点,根节点也是Element对象
tree = ET.parse(‘file.xml‘)
root = tree.getroot()
  • 访问

    • 访问Element对象的标签、属性和值
tag = element.tag
attrib = element.attrib
value = element.text
    • 访问子节点
#打印根节点的标签和属性,获取
for child in root:
    print(child.tag, child.attrib)
  • 查找操作

    • Element元素迭代子元素:Element.iter("tag"),可以罗列该节点所包含的所有其他节点(element对象)
#打印根节点中所有的neighbor对象的name属性
for neighbor in root.iter(‘neighbor‘):
    print(neighbor.attrib[‘name‘])
    • Element.findall("tag"):查找当前元素为“tag”的直接子元素
#findall只能用来查找直接子元素,不能用来查找rank,neighbor等element
for country in root.findall(‘country‘):
    rank = country.find(‘rank‘).text
    name = country.find(‘rank‘).text
    neig = country.find(‘neighbor‘).attrib
    print(rank, name,neig)
    • Element.find("tag"):查找为tag的第一个直接子元素
#返回第一个tag为country的element,如没有,返回None
firstCountry = root.find("country")
print(firstCountry)
  • 创建xml文件

__author__ = ‘xua‘

import xml.etree.ElementTree as ET
#创建根节点
a = ET.Element("root")
#创建子节点,并添加属性
b = ET.SubElement(a,"sub1")
b.attrib = {"name":"name attribute"}
#创建子节点,并添加数据
c = ET.SubElement(a,"sub2")
c.text = "test"

#创建elementtree对象,写文件
tree = ET.ElementTree(a)
tree.write("test.xml")

创建的新文件内容为:<root><sub1 name="name attribute" /><sub2>test</sub2></root>

  • 修改XML文件

    • ElementTree.write("xmlfile"):更新xml文件
    • Element.append():为当前element对象添加子元素(element)
    • Element.set(key,value):为当前element的key属性设置value值
    • Element.remove(element):删除为element的节点

#读取待修改文件
updateTree = ET.parse("test.xml")
root = updateTree.getroot()
#创建新节点并添加为root的子节点
newEle = ET.Element("NewElement")
newEle.attrib = {"name":"NewElement","age":"20"}
newEle.text = "This is a new element"
root.append(newEle)

#修改sub1的name属性
sub1 = root.find("sub1")
sub1.set("name","New Name")

#修改sub2的数据值
sub2 = root.find("sub2")
sub2.text = "New Value"

#写回原文件
updateTree.write("test.xml")

更新完的文件为:<root><sub1 name="New Name" /><sub2>New Value</sub2><NewElement age="20" name="NewElement">This is a new element</NewElement></root>

总结

XML的操作比较常见,当然也有很多第三方的库可以使用,所需要做的操作无非就是常用的读写xml文件、元素节点的增删改查,大家还可以在python官方文档上学习更多的操作。

https://docs.python.org/3.5/library/xml.etree.elementtree.html

原文地址:https://www.cnblogs.com/jt925/p/10228997.html

时间: 2024-11-10 15:15:30

常用模块(xml)的相关文章

python_day06 常用模块xml/configparser/hashlib/subprocess 面向对象程序设计

常用模块shutilxmlconfigparserhashlibsuprocess面向对象的程序设计 常用模块 xml模块 1 <?xml version="1.0"?> 2 <data> 3 <country name="Liechtenstein"> 4 <rank updated="yes">2</rank> 5 <year>2008</year> 6 &l

python - 常用模块 - xml处理模块

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,在以前,在json还没诞生之前,xml十分流行, 以至于到现在很多传统公司如金融行业的很多系统的接口还主要是xml. 1 #!/usr/bin/env python 2 #coding:utf-8 3 4 5 import xml.etree.ElementTree as ET 6 7 print(''' 8 =============打印根节点的名字============ 9 ''') 10

常用模块——xml模块

XML 可扩展标记语言 格式:<></> 也是一种通用的数据格式 之所以用它是因为块平台性. 语法格式 一.任何的起始标签都必须有?一个结束标签. <> </>二.可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签.这种语法是在?于符号之前紧跟一个斜线(/),XML解析器会将其翻译成<百度百科词条></百度百科词条>.例例如<百度百科词条/>. 三.标签必须按合适的顺序进?行行嵌套,所以结束标签必须按镜像顺序匹

python常用模块——xml(未整理完)

什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识. 它也是元标记语言,即定义了用于定义其他与特定领域有关的.语义的.结构化的标记语言的句法语言. XML的解析 常见的XML编程接口有DOM和SAX,这两种接口处理XML文件的方式不同,当然使用场合也不同. python有三种方法解析XML,SAX,DOM,以及ElementTree:

常用模块:re ,shelve与xml模块

一 shelve模块: shelve模块比pickle模块简单,只有一个open函数,所以使用完之后要使用f.close关闭文件.返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型. import shelve f=shelve.open(r'sheve.txt') # f['stu1_info']={'name':'egon','age':18,'hobby':['piao','smoking','drinking']} # f['stu2_info']=

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

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,

学习日记0813常用模块configparser,shelve,hashlib,xml

configparser模块 什么是configparser模块 用于解析配置文件 后缀为 ini或者cfg 怎么用configparser模块 查看配置文件中的内容 1 import configparser 2 cfg = configparser.ConferParser() 3 cfg.read('文件路径',encoding='utf-8') 4 print(cfg.sections()) 5 print(cfg.options('section名')) 修改配置文件中的内容 impo

常用模块(三)——shelve、xml、hashlib、configparser

常用模块(三) 一.shelve模块 1.shelve模块也是一种序列化模块,内部使用的是pickle模块,所以也存在跨平台性差的问题 2.特点: 只要提供一个文件名即可 读写的方式和字典一样 将数据以类似字典的形式在文件中读写 3.应用场景 在单击的程序中使用 4.使用方法 (1)序列化 1 import shelve 2 3 s1= shelve.open('a.txt') # 打开文件 4 s1['week']=["Sun", "Mon", "Tue

Day5 - 常用模块学习

本节大纲: 模块介绍(模块导入方法) time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一堆代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又

python基础--常用模块与面向对象基础

1常用模块 1.1 xml xml是实现不同语言或程序之间进行数据交换的协议 xml的格式如下: <?xml version="1.0"?> <data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year>2008</year> <gdppc>141100</gdp