python常用模块-XML模块

XML概述

XML 指可扩展标记语言(eXtensible Markup Language)
XML 被设计用来传输和存储数据。
XML 是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。
它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。

XML语法规则

XML树结构

XML 文档必须包含根元素。该元素是所有其他元素的父元素。
XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。
所有的元素都可以有子元素

<root> #根元素
	<child> #子元素
		<subchild>.....</subchild>
	</child>
</root>

XML元素

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
元素可包含

  • 子元素
  • 属性
  • 文本
<元素名 属性="value">text</元素名>
元素的基本语法
  • 所有的 XML 元素都必须有一个关闭标签
  • XML 标签对大小写敏感
  • XML 必须正确嵌套
  • XML 属性值必须加引号

一个简单的XML文件

xmltest.xml

<?xml version="1.0" encoding="utf-8"?>
<bookstore>
    <book category="CHILDREN">
        <title>Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="WEB">
        <title>Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>

在上面的实例中, 和 都有 元素内容,因为他们包含其他元素。 元素也有属性(category=“CHILDREN”)。、、 和 有文本内容,因为他们包含文本。

XML模块常用函数

XML解析

  • ElementTree.XML(str)
from xml.etree import ElementTree as ET

with open("data.xml",'r') as file:
     #将xml文档中内容读取到strXml中
     strXml =file.read()
     #XML将字符串解析成xml特殊对象,返回xml.etree.ElementTree.Element对象,这个是根节点
     root=ET.XML(strXml)
     print(type(root))
  • ElementTree.parse("file_path")
#打开xml文件并且解析,返回一个xml.etree.ElementTree.ElementTree对象
tree=ET.parse("data.xml")
#获取xml的根节点
root=tree.getroot() #获取根元素对象
print(root.tag)

遍历指定的元素(查)

  • 元素对象.iter("元素名")
    在根据节点名称寻找所有指定的节点,并返回一个迭代器
  • 元素对象.items()
    获取节点中所有属性的键值对
  • 元素对象.keys()
    获取节点中属性的键
import xml.etree.ElementTree as ET

tree = ET.parse("xmltest") 
root = tree.getroot()
for value in root.iter("uid"): #找到根元素中的所有uid元素并遍历返回一个迭代器
	print(value.tag,value.text,value.attrib) #tag是获取元素名,text是获取文本内容,attrib是属性值

修改,删除指定元素(改)

  • 元素对象.find("元素名")
    获取第一个寻找到的子节点
  • 元素对象.findall("元素名")
    获取所有的子节点,并返回包含元素对象的列表
  • 元素对象.set(“属性1”,"value1")
    为指定元素添加属性
  • 元素对象.remove("元素名")
    删除节点中的元素
  • xml对象.write("file.xml")
    将XML对象写入一个新的文件中
import xml.etree.ElementTree as ET

tree = ET.parse("xmltest")
root = tree.getroot()

for node in root:
    for value in node.iter('year'):
        new_year = int(value.text) + 2
        value.text = str(new_year)
        value.set("update","yes") #添加属性值update=“yes”

tree.write("xml_update.xml")

创建xml文档

from xml.etree import ElementTree as ET
#创建根节点,并使用键值对的方式添加属性
root=ET.Element("home",{"name":"root"})
#创建子节点,也可以用下面的方式创建,但只是创建,还没有加到任何节点下面
#sub=root.makeelement("son",{"sonName":"haha"}),下面同样可以
sub=ET.Element("son",{"sonName":"haha"})
subsub=ET.Element("subson",{"subsonName":"xixi"})
root.append(sub) #添加子节点
sub.append(subsub)
tree=ET.ElementTree(root) #创建一个xml对象
tree.write("createXml.xml")
#####结果是没有锁进的####
<home name="root">
    <son subName="haha">
        <son subName="haha" />
    </son>
</home>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值