码迷,mamicode.com
首页 > 编程语言 > 详细

python基础-xml模块

时间:2020-12-09 11:45:00      阅读:9      评论:0      收藏:0      [点我收藏+]

标签:标记语言   可扩展   解释   order   格式   root   电子   子集   height   

xml 是实现不通语言或程序之间进行数据交换的协议,可扩展标记语言,标准通用标记语言的子集。是一种用于标记电子文件使其具有结构性的标记语言。xml格式如下,是通过<>节点来区别数据结构的。xml在各种语言都是支持的。

如下

<data>
    <country name="Liechtenstein">
        <rank updated="yes">2</rank>
        <year updated="yes">2010</year>
        <gdppc>141100</gdppc>
        <neighbor direction="E" name="Austria" />
        <neighbor direction="W" name="Switzerland" />
    </country>
    <country name="Singapore">
        <rank updated="yes">5</rank>
        <year updated="yes">2013</year>
        <gdppc>59900</gdppc>
        <neighbor direction="N" name="Malaysia" />
    </country>
</data>

1.xml文件读取

a.节点

import xml.etree.ElementTree as ET

tree = ET.parse(test.xml)  # parse 解析一个xml文件
root = tree.getroot()  # 根节点
print(root)
print(root.tag)
for i in root:
    print(i.tag)  # 子节点
    for j in i:  # 孙节点
        print(j.tag)

技术图片

 

 b.attrib属性,text文本

import xml.etree.ElementTree as ET

tree = ET.parse(test.xml)  # parse 解析一个xml文件
root = tree.getroot()  # 根节点
for i in root:
    for j in i:
        print(j.attrib)  #属性
        print(j.text) #文本

技术图片

技术图片

 

c.def iter(self, tag=None):-迭代器:

源码解释的是Create tree iterator.

The iterator loops over the element and all subelements in document
order, returning all elements with a matching tag.
就是迭代所有节点,找出tag对应的节点
import xml.etree.ElementTree as ET

tree = ET.parse(test.xml)
root = tree.getroot()
for i in root.iter("year"):  # iter为所有节点,不传参为所有节点。传参寻找tag的节点
    print(i.tag, i.attrib, i.text)

技术图片

2.xml修改

import xml.etree.ElementTree as ET

tree = ET.parse(test.xml)
root = tree.getroot()
for i in root.iter("year"):  # iter为所有节点
    print(type(i.text))  # text为str格式
    ‘‘‘修改‘‘‘
    new_year = int(i.text) + 1  #
    i.text = str(new_year)
    i.set(updated, yes)  # 原文提示是Set element attribute 设置属性
    ‘‘‘tree已经修改,还需要写入xml文件‘‘‘
tree.write(test_new.xml)

3.xml删除

import xml.etree.ElementTree as ET

tree = ET.parse(test.xml)
root = tree.getroot()
for i in root.findall(country):#"""Find all matching subelements by tag name or path.
    rank=i.find(rank).text
    rank=int(rank)
    if rank>1:
        root.remove(i) #只是tree修改了,还需要写入xml
tree.write(test.xml)

4.用python写xml

import xml.etree.ElementTree as ET

new_xml=ET.Element(namelist) #根节点
name=ET.SubElement(new_xml,name,attrib={enrolled:yes}) #def SubElement(parent, tag, attrib={}, **extra):
age=ET.SubElement(name,age,attrib={check:yes})
sex=ET.SubElement(name,one)
name1=ET.SubElement(new_xml,name,attrib={enrolled:no}) #def SubElement(parent, tag, attrib={}, **extra):
age=ET.SubElement(name1,age,attrib={check:no})
age.text=19
sex=ET.SubElement(name1,two)

et=ET.ElementTree(new_xml)#生成文档对象
et.write(test.xml)

技术图片

 

python基础-xml模块

标签:标记语言   可扩展   解释   order   格式   root   电子   子集   height   

原文地址:https://www.cnblogs.com/liaoyifu/p/14085134.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!