iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python对XML文件实现增删改查操作
  • 757
分享到

Python对XML文件实现增删改查操作

Python XML增删改查Python XML操作Python XML修改 2022-11-13 19:11:34 757人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录python 操作 XML读取XML文件遍历XML元素查找XML元素添加XML元素修改XML元素Python 操作 XML 读取XML文件 关于XML的介绍 <data&g

Python 操作 XML

读取XML文件

关于XML的介绍

<data> 与 </data> 是一对标签的开始与结束

<property … /> 也是一个正确的标签,以 /> 结尾,是在标签没有嵌套内容时的简写形式

name=“cat”,name是<data>标签的一个属性,cat是name属性的值

description here …是<data>标签的内容,这里是一段文本。当然也可以是xml的嵌套

<data name="cat" num="10"> description here ... </data>

<property value="node" />

<country name="china">
	<province name="beijing">
		<school name="the sunshine school" />
	</province>
</country>

准备一个demo.xml文件

<data>
    <teacher name="Albert">
        <birthday>1980</birthday>
        <gender>male</gender>
        <subject>Math</subject>
    </teacher>

    <student name="Becky">
        <birthday>2000</birthday>
        <gender>female</gender>
        <hobbies>
            <hobby>skating</hobby>
            <hobby>rocks</hobby>
        </hobbies>
        <exam absence="no">
            <math>90</math>
            <english>90</english>
            <music>95</music>
        </exam>

    </student>
    <student name="Cindy">
        <birthday>2001</birthday>
        <gender>female</gender>
        <hobbies>
            <hobby>reading</hobby>
            <hobby>guitar</hobby>
        </hobbies>
        <exam absence="yes">
        </exam>
    </student>

    <student name="Duke">
        <birthday>2000</birthday>
        <gender>male</gender>
        <hobbies>
            <hobby>football</hobby>
            <hobby>surfing</hobby>
        </hobbies>
        <exam absence="no">
            <math>100</math>
            <english>80</english>
            <music>92</music>
        </exam>
    </student>

</data>

读取xml文件内容

# Read the .xml file
tree = ET.parse("demo.xml")
root = tree.getroot()
print(root)

结果

<Element 'data' at 0x102d80cf8>

遍历XML元素

for … in … 可以遍历当前元素的所有直接子节点

for n in root:
    # items() returns all <key, value> pairs of the tag
    print(n, n.tag , n.attrib, n.items())

结果

(<Element 'teacher' at 0x1048b9e48>, 'teacher', {'name': 'Albert'}, [('name', 'Albert')])
(<Element 'student' at 0x1048bf0f0>, 'student', {'name': 'Becky'}, [('name', 'Becky')])
(<Element 'student' at 0x1048bf3c8>, 'student', {'name': 'Cindy'}, [('name', 'Cindy')])
(<Element 'student' at 0x1048bf5f8>, 'student', {'name': 'Duke'}, [('name', 'Duke')])

想要迭代遍历当前元素的所有子节点(包括子孙节点)

for n in root.iter():
    print(n, n.tag)

结果

(<Element 'data' at 0x1052f0cf8>, 'data')
(<Element 'teacher' at 0x1052f0e48>, 'teacher')
(<Element 'birthday' at 0x1052f0d30>, 'birthday')
(<Element 'gender' at 0x1052f6080>, 'gender')
(<Element 'subject' at 0x1052f60b8>, 'subject')
(<Element 'student' at 0x1052f60f0>, 'student')
(<Element 'birthday' at 0x1052f6048>, 'birthday')
(<Element 'gender' at 0x1052f6128>, 'gender')
(<Element 'hobbies' at 0x1052f6198>, 'hobbies')
(<Element 'hobby' at 0x1052f6208>, 'hobby')
(<Element 'hobby' at 0x1052f6240>, 'hobby')
(<Element 'exam' at 0x1052f62b0>, 'exam')
(<Element 'math' at 0x1052f6320>, 'math')
(<Element 'english' at 0x1052f6390>, 'english')
(<Element 'music' at 0x1052f6400>, 'music')
(<Element 'student' at 0x1052f63c8>, 'student')
(<Element 'birthday' at 0x1052f6438>, 'birthday')
(<Element 'gender' at 0x1052f6470>, 'gender')
(<Element 'hobbies' at 0x1052f64a8>, 'hobbies')
(<Element 'hobby' at 0x1052f6518>, 'hobby')
(<Element 'hobby' at 0x1052f6588>, 'hobby')
(<Element 'exam' at 0x1052f65c0>, 'exam')
(<Element 'student' at 0x1052f65f8>, 'student')
(<Element 'birthday' at 0x1052f6630>, 'birthday')
(<Element 'gender' at 0x1052f6668>, 'gender')
(<Element 'hobbies' at 0x1052f66a0>, 'hobbies')
(<Element 'hobby' at 0x1052f6710>, 'hobby')
(<Element 'hobby' at 0x1052f6780>, 'hobby')
(<Element 'exam' at 0x1052f67b8>, 'exam')
(<Element 'math' at 0x1052f6828>, 'math')
(<Element 'english' at 0x1052f6898>, 'english')
(<Element 'music' at 0x1052f6908>, 'music')

想要选择性地迭代直接子节点

for n in root.iter('teacher'):
    print(n, n.tag)
(<Element 'teacher' at 0x100f29e48>, 'teacher')

查找XML元素

find与findall查找xml元素

# find the first element
print(root.find('student'))
# find all  elements
print(root.findall('student'))
<Element 'student' at 0x1034300f0>

[<Element 'student' at 0x1034300f0>, <Element 'student' at 0x1034303c8>, <Element 'student' at 0x1034305f8>]

demo

for n in root:
    if n.tag == 'student' and n.get('name') == 'Becky':
        exam_node = n.find('exam')
        for subject in exam_node:
            print(subject.tag + " " + subject.text)

结果

math 90
english 90
music 95

添加XML元素

p = ET.Element(tag_name)

demo

for n in root:
    if n.tag == 'student' and n.get('name') == 'Cindy':
        exam_node = n.find('exam')
        exam_node.set("absence", "no")
        for subject in ['math', 'music']:
            p = ET.Element(subject)
            p.text = '90'
            exam_node.append(p)

if os.path.exists('new.xml'):
    os.remove('new.xml')
tree.write('new.xml', encoding='utf-8', xml_declaration=True)

结果

    <student name="Cindy">
        <birthday>2001</birthday>
        <gender>female</gender>
        <hobbies>
            <hobby>reading</hobby>
            <hobby>guitar</hobby>
        </hobbies>
        <exam absence="no">
        <math>90</math><music>90</music></exam>
    </student>

修改XML元素

demo

for n in root:
    if n.tag == 'student' and n.get('name') == 'Cindy':
        exam_node = n.find('exam')
        exam_node.set("absence", "no")
        exam_node.set("date", "2022-11-11")
        for subject in ['math', 'music']:
            p = ET.Element(subject)
            p.text = '90'
            exam_node.append(p)

        hobbies_node = n.find('hobbies').findall("hobby")
        hobbies_node[0].text = 'piano'
        p = ET.Element("hobby")
        p.set("old_hobby", 'yes')
        p.text = 'reading'
        n.find('hobbies').remove(hobbies_node[1])
        n.find('hobbies').append(p)

结果

    <student name="Cindy">
        <birthday>2001</birthday>
        <gender>female</gender>
        <hobbies>
            <hobby>piano</hobby>
            <hobby old_hobby="yes">reading</hobby></hobbies>
        <exam absence="no" date="2022-11-11">
        <math>90</math><music>90</music></exam>
    </student>

到此这篇关于Python对XML文件实现增删改查操作的文章就介绍到这了,更多相关Python XML增删改查内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python对XML文件实现增删改查操作

本文链接: https://www.lsjlt.com/news/171220.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python对XML文件实现增删改查操作
    目录PYTHON 操作 XML读取XML文件遍历XML元素查找XML元素添加XML元素修改XML元素PYTHON 操作 XML 读取XML文件 关于XML的介绍 <data&g...
    99+
    2022-11-13
    Python XML增删改查 Python XML操作 Python XML修改
  • Python+Xml +操作+增删改查
    由于小编的系统需要进程间通信,想通过对Xml文件操作,来进行信息交互,于是写了一组相关的类。 xml文件: <xml version='1.0' encoding='utf-8'> <flags> ...
    99+
    2023-01-31
    操作 Python Xml
  • Python集合如何实现增删改查操作
    这篇文章主要介绍Python集合如何实现增删改查操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.集合新增集合元素set1 = {'name', 19, &...
    99+
    2023-06-29
  • Java用jdbc连接实现对MySQL增删改查操作
      目录 前言 1.新建项目 2.添加jar包 3.jdbc的连接 4、简单的MySQL增删改查操作 前言 大家好,我是ice三分颜色。个人主页:ice三分颜色的博客 本文用的Idea演示主要讲了如何用idea完成jdbc连接,Ja...
    99+
    2023-09-06
    mysql jdbc java 数据库 sql
  • SpringDataJpa:JpaRepository增删改查操作
    Jpa查询 1. JpaRepository简单查询 基本查询也分为两种,一种是spring data默认已经实现,一种是根据查询的方法来自动解析成SQL。 预先生成方法 spri...
    99+
    2024-04-02
  • Python集合的增删改查操作
    目录1.集合新增集合元素2.删除可变集合元素3.修改可变集合4.集合元素查询方法前言: 集合分为可变集合和不可变集合两种,所以对其的增删改查操作要看集合的类型来决定。不可变的数据当然...
    99+
    2024-04-02
  • sqlserver 中如何实现增删改查操作
    本篇文章给大家分享的是有关sqlserver 中如何实现增删改查操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一 Insert 语句1.在...
    99+
    2024-04-02
  • mongodb中怎么实现增删改查操作
    这篇文章给大家介绍mongodb中怎么实现增删改查操作,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一: Insert操作上一篇也说过,文档是采用“K-V”格式存储的,如果大...
    99+
    2024-04-02
  • nodejs如何操作mysql实现增删改查
    这篇文章将为大家详细讲解有关nodejs如何操作mysql实现增删改查,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先需要安装mysql模块:npm install m...
    99+
    2024-04-02
  • vue中怎么实现增删改查操作
    vue中怎么实现增删改查操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体内容如下我们把这些用户信息保存到list的数组中,然后增删改查就...
    99+
    2024-04-02
  • JS操作对象数组实现增删改查实例代码
    1.介绍 最近帮朋友弄一个简单的针对json数组的增删改成页面,正好涉及到了js去操作对象数组实现增删改查功能。我估计很多朋友应该也会遇到这类操作,所以记录一下以便分享。 2.数据...
    99+
    2024-04-02
  • php对json文件的增删改查
    随着互联网的发展,数据的交互越来越频繁,其中JSON(JavaScript Object Notation)成为大家喜爱的数据传输格式之一。因此,处理JSON数据变得越来越重要。本文将介绍使用PHP处理JSON文件的增、删、改、查操作。JS...
    99+
    2023-05-24
  • 使用python怎么对MongoDB进行增删改查操作
    这篇文章将为大家详细讲解有关使用python怎么对MongoDB进行增删改查操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、说明MongoDB使用查看数据的功能时非常方便。能立即看到增...
    99+
    2023-06-14
  • MongoDB怎么实现连接、增删改查操作
    MongoDB怎么实现连接、增删改查操作?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体如下:MongoDB 中默认的数据库为 test...
    99+
    2024-04-02
  • 使用PyMySQL怎么实现增删查改操作
    使用PyMySQL怎么实现增删查改操作?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、PyMySQL的使用步骤:2、案例:1 查询数据库中的表的信息: #&nb...
    99+
    2023-06-15
  • C#操作SQLite实现数据的增删改查
    目录简介主要代码SQLiteHelper.csUsingLock.csForm1.cs简介 SQLite是一个轻量级、跨平台的关系型数据库,在小型项目中,方便,易用,同时支持多种开发...
    99+
    2024-04-02
  • java中如何实现JDBC增删改查操作
    小编给大家分享一下java中如何实现JDBC增删改查操作,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!     我们先看一遍步骤:    这里不推荐使用...
    99+
    2023-06-22
  • C#中XML文件内容增删改查的方法
    本篇内容介绍了“C#中XML文件内容增删改查的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是XMLXML是一种可扩展标记语言(EX...
    99+
    2023-06-29
  • ASP.NET MVC创建XML文件并实现元素增删改
    如果创建如下的XML: <xml version="1.0" encoding="utf-8" standalone="yes"> <Students> ...
    99+
    2022-11-13
    ASP.NET MVC 创建XML XML增删改元素
  • MySQL表的操作『增删改查』
    ✨个人主页: 北 海 🎉所属专栏: MySQL 学习 🎃操作环境: CentOS 7.6 阿里云远程服务器 🎁软件版本: MySQL 5.7.44 文章目录 1.创建表1.1...
    99+
    2023-12-22
    mysql 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作