python模块的分类有哪些_python之模块分类(二)

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单。在json诞生之前,计算机开发界基本都是用xml,至今很多传统公司如金融行业的很多系统的接口还主要是xml。许多运维工具的配置以及KVM虚拟机的配置文件都是xml格式。

一下通过KVM虚拟机的配置文件,来介绍xml文件的风格,其就是通过<>节点来区别数据结构的:

Centos7u4-1

f9dfe67c-78c3-4f22-a6f1-7eea9288b62e

1048576

1048576

1

hvm

IvyBridge

destroy

restart

destroy

/usr/libexec/qemu-kvm

View Code

xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。从结构上,很像HTML超文本标记语言。但他们被设计的目的是不同的,超文本标记语言被设计用来显示数据,其焦点是数据的外观。它被设计用来传输和存储数据,其焦点是数据的内容。

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

一、创建:

ElementTree(tag),其中tag表示根节点,初始化一个ElementTree对象。

Element(tag, attrib={}, **extra)函数用来构造XML的一个根节点,其中tag表示根节点的名称,attrib是一个可选项,表示节点的属性。

SubElement(parent, tag, attrib={}, **extra)用来构造一个已经存在的节点的子节点 Element.text和SubElement.text表示element对象的额外的内容属性,Element.tag和Element.attrib分别表示element对象的标签和属性。

ElementTree.write(file, encoding='us-ascii', xml_declaration=None, default_namespace=None, method='xml'),函数新建一个XML文件,并且将节点数数据写入XML文件中。

下面以新建一个网站的sitemap.xml文件为例进行代码示例:

#Author:Anliu

from xml.etree import ElementTree as ET

def build_sitemap():

urlset = ET.Element("urlset") #设置一个根节点,标签为urlset

url = ET.SubElement(urlset,"url")

loc = ET.SubElement(url,"loc") #在根节点urlset下建立子节点

loc.text = "http://www/baidu.com"

lastmod = ET.SubElement(url,"lastmod")

lastmod.text = "2020-4-13"

changefreq = ET.SubElement(url,"changefreq")

changefreq.text = "daily"

priority = ET.SubElement(url,"priority")

priority.text = "1.0"

tree = ET.ElementTree(urlset)

tree.write("test_xml.xml")

if __name__ == '__main__':

build_sitemap()

结果如下图所示:

#Author:Anliu

import xml.etree.cElementTree as ET

tree = ET.parse("centos7u4.xml")

root = tree.getroot()

#rint(root.tag)

#rint(root.text)

#遍历xml文档

#for child in root:

# print(child.tag, child.attrib)

# for i in child:

# print(i.tag, i.text)

# 只遍历 节点

for node in root.iter('name'):

print(node.tag, node.text)

node.text = "Centos7u4-1" #将name字段改成Centos7u4-1

print(node.tag, node.text)

tree.write("centos7u4.xml")

三、修改:

ElementTree.parse(source, parser=None),将xml文件加载并返回ElementTree对象。parser是一个可选的参数,如果为空,则默认使用标准的XMLParser解析器。

ElementTree.getroot(),得到根节点。返回根节点的element对象。

Element.remove(tag),删除root下名称为tag的子节点 以下函数,ElementTree和Element的对象都包含。

find(match),得到第一个匹配match的子节点,match可以是一个标签名称或者是路径。返回个element findtext(match,default=None),得到第一个配置的match的element的内容 findall(match),得到匹配match下的所有的子节点,match可以是一个标签或者是路径,它会返回一个list,包含匹配的elements的信息 iter(tag),创建一个以当前节点为根节点的iterator。

示例1:将1小节创建的sitemap.xml的url修改为“www.baidu.com”

#Author:Anliu

from xml.etree import ElementTree as ET

tree = ET.parse("test_xml.xml")

url = tree.find("url")

for rank in tree.iter('loc'):

rank.text = "http://www.baidu.com"

tree.write("test_xml.xml")

示例2:将centos7u4中的vcpu个数加1

#Author:Anliu

import xml.etree.ElementTree as ET

tree = ET.parse("centos7u4.xml")

root = tree.getroot()

# 修改:将centos7u4中的cup个数加1,并另存为xmltest.xml

for node in root.iter('vcpu'):

# print(node)

new_year = int(node.text) + 1

node.text = str(new_year)

node.set("updated", "yes")

tree.write("xmltest.xml")

四、删除:

2

2008

141100

5

2011

59900

69

2011

13600

View Code

删除node

import xml.etree.ElementTree as ET

tree= ET.parse("xmltest.xml")

root= tree.getroot()for country in root.findall('country'):

rank = int(country.find('rank').text)

if rank > 50:

root.remove(country)

tree.write('output.xml')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值