iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python操作XML格式文件的一些常见方法
  • 238
分享到

python操作XML格式文件的一些常见方法

2024-04-02 19:04:59 238人浏览 八月长安

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

摘要

目录前言1. 读取文件和内容2.读取节点数据3.修改和删除节点4.构建文档 方式一ET.Element()补充:XML文件和JSON文件互转1、XML文件转为jsON文件2、JSON

前言

可扩展标记语言,是一种简单的数据存储语言,XML被设计用来传输和存储数据

  • 存储,可用来存放配置文件,例:java配置文件
  • 传输,网络传输以这种格式存在,例:早期ajax传输数据等
<data>
    <country name="Liechtenstein">
        <rank updated="yes">2</rank>
        <year>2023</year>
        <gdppc>141100</gdppc>
        <neighbor direction="E" name="Austria" />
        <neighbor direction="W" name="Switzerland" />
    </country>
    <country name="Singapore">
        <rank updated="yes">5</rank>
        <year>2026</year>
        <gdppc>59900</gdppc>
        <neighbor direction="N" name="Malaysia" />
    </country>
    <country name="Panama">
        <rank updated="yes">69</rank>
        <year>2026</year>
        <gdppc>13600</gdppc>
        <neighbor direction="W" name="Costa Rica" />
        <neighbor direction="E" name="Colombia" />
    </country>
</data>

1. 读取文件和内容

#导包
from xml.etree import ElementTree as ET

# ET去打开xml文件
tree = ET.parse("files/xo.xml")
# 获取根标签
root = tree.getroot()
print(root) # <Element 'data' at 0x7f94e02763b0>

2.读取节点数据

获取根标签

root = ET.XML(content)

查找节点【默认找第一个】 find()

country_object = root.find("country")
print(country_object)  #<Element 'country' at 0x0000020D57DFB220>

获取节点标签 tag

country_object.tag  #country

获取节点属性 attrib

country_object.attrib   #{'name': 'Liechtenstein'}

获取节点文本 text

gdppc_object.text    #141100

循环节点

# 获取data标签的孩子标签
for child in root:
    print(child.tag, child.attrib)
    #获取child标签的孩子标签
    for node in child:
        print(node.tag, node.attrib, node.text)

查找所有标签 iter()

# 获取data里面所有year标签
for child in root.iter('year'):
    print(child.tag, child.text)

查找所有标签 findall()

# 查找所有的country标签
v1 = root.findall('country')

查找标签

# 查找country里面的rank标签,找第一个
v2 = root.find('country').find('rank')

3.修改和删除节点

【修改和删除内容只在内存中修改,没有存到文件中,都要重新保存文件】

修改节点内容

#修改rank文本
rank.text = "999"
tree = ET.ElementTree(root)
tree.write("new.xml", encoding='utf-8')

修改节点属性

#修改rank属性
rank.set('update', '2020-11-11')
tree = ET.ElementTree(root)
tree.write("new.xml", encoding='utf-8')

保存文件

tree = ET.ElementTree(root)
tree.write("new.xml", encoding='utf-8')

删除节点

root.remove( root.find('country') )
tree = ET.ElementTree(root)
tree.write("new.xml", encoding='utf-8')

4.构建文档 方式一ET.Element()

<home>
    <son name="儿1">
        <grandson name="儿11"></grandson>
        <grandson name="儿12"></grandson>
    </son>
    <son name="儿2"></son>
</home>
from xml.etree import ElementTree as ET
#创建根标签
root=ET.Element('home')
# 创建大儿子,与root还没有关系
son1=ET.Element('son',{'name':'儿1'})
#创建小儿子,与root还没有关系
son2=ET.Element('son',{'name':'儿2'})

#创建2个孙子
grandson1=ET.Element('grandson',{'name':'儿11'})
grandson2=ET.Element('grandson',{'name':'儿12'})

# 创建两个孙子,与son1还没有关系
son1.append(grandson1)
son1.append(grandson2)

# 把儿子添加到根节点
root.append(son1)
root.append(son2)

#root节点放到根节点中
tree=ET.ElementTree(root)
#保存xml文件
# short_empty_elements=True,节点中没有元素,用简写方式显示例:<grandson name="儿11" />
tree.write('file/root.xml',encoding='utf-8',short_empty_elements=True)

方式二 标签.makeelement()

<famliy>
    <son name="儿1">
        <grandson name="儿11"></grandson>
        <grandson name="儿12"></grandson>
    </son>
    <son name="儿2"></son>
</famliy>
from xml.etree import ElementTree as ET

# 创建根节点
root = ET.Element("famliy")

# 创建大儿子,与root还没有关系
son1 = root.makeelement('son', {'name': '儿1'})

#创建小儿子,与root还没有关系
son2 = root.makeelement('son', {"name": '儿2'})

# 创建两个孙子,与son1还没有关系
grandson1 = son1.makeelement('grandson', {'name': '儿11'})
grandson2 = son1.makeelement('grandson', {'name': '儿12'})

son1.append(grandson1)
son1.append(grandson2)

# 把儿子添加到根节点中
root.append(son1)
root.append(son2)

tree = ET.ElementTree(root)
tree.write('oooo.xml',encoding='utf-8')

方式三 标签.SubElement(),创建标签的子标签

<famliy>
	<son name="儿1">
    	<age name="儿11">孙子</age>
    </son>
	<son name="儿2"></son>
</famliy>
from xml.etree import ElementTree as ET

# 创建根节点
root = ET.Element("famliy")

# 创建root节点的子标签大儿子
son1 = ET.SubElement(root, "son", attrib={'name': '儿1'})
# 创建root节点的子标签小儿子
son2 = ET.SubElement(root, "son", attrib={"name": "儿2"})

# 在大儿子中创建一个孙子
grandson1 = ET.SubElement(son1, "age", attrib={'name': '儿11'})
grandson1.text = '孙子'


et = ET.ElementTree(root)  #生成文档对象
et.write("test.xml", encoding="utf-8")

方式四

<user><![CDATA[你好呀]]</user>
from xml.etree import ElementTree as ET

# 创建根节点
root = ET.Element("user")
#<![CDATA[你好呀]]直接添加到文本里
root.text = "<![CDATA[你好呀]]"

et = ET.ElementTree(root)  # 生成文档对象
et.write("test.xml", encoding="utf-8")

补充:XML文件和JSON文件互转

记录工作中常用的一个小技巧

cmd控制台安装第三方模块:

pip install xmltodict

1、XML文件转为JSON文件

新建一个1.xml文件:

<note date="23/04/2022">
    <to>tom</to>
    <from>mary</from>
    <msg>love</msg></note>

转换代码实现:

import jsonimport xmltodictdef xml_to_json(xml_str):
    """parse是的xml解析器,参数需要
    :param xml_str: xml字符串
    :return: json字符串
    """
    xml_parse = xmltodict.parse(xml_str)
    # json库dumps()是将dict转化成json格式,loads()是将json转化成dict格式。
    # dumps()方法的ident=1,格式化json
    json_str = json.dumps(xml_parse, indent=1)
    return json_str
 
 
XML_PATH = './1.xml'  # xml文件的路径with open(XML_PATH, 'r') as f:
    xmlfile = f.read()
    with open(XML_PATH[:-3] + 'json', 'w') as newfile:
        newfile.write(xml_to_json(xmlfile))

输出结果(生成json文件):

2、JSON文件转换为XML文件

新建test.json文件:

{
  "student": {
    "course": {
      "name": "math",
      "score": "90"
    },
    "info": {
      "sex": "male",
      "name": "name"
    },
    "stid": "10213"
  }}

转换代码实现:

import xmltodictimport jsondef json_to_xml(python_dict):
    """xmltodict库的unparse()json转xml
    :param Python_dict: python的字典对象
    :return: xml字符串
    """
    xml_str = xmltodict.unparse(python_dict)
    return xml_str
 
 
JSON_PATH = './test.json'  # json文件的路径with open(JSON_PATH, 'r') as f:
    jsonfile = f.read()
    python_dict = json.loads(jsonfile)  # 将json字符串转换为python字典对象
    with open(JSON_PATH[:-4] + 'xml', 'w') as newfile:
        newfile.write(json_to_xml(python_dict))

输出结果(生成xml文件):

总结

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

--结束END--

本文标题: python操作XML格式文件的一些常见方法

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

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

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

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

下载Word文档
猜你喜欢
  • python操作XML格式文件的一些常见方法
    目录前言1. 读取文件和内容2.读取节点数据3.修改和删除节点4.构建文档 方式一ET.Element()补充:XML文件和JSON文件互转1、XML文件转为JSON文件2、JSON...
    99+
    2022-11-11
  • Python操作CSV格式文件的方法有哪些
    这篇文章主要介绍“Python操作CSV格式文件的方法有哪些”,在日常操作中,相信很多人在Python操作CSV格式文件的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python操作CSV格式文件...
    99+
    2023-06-20
  • Python操作CSV格式文件的方法大全
    目录(一)CSV格式文件(二)CSV库操作csv格式文本(三)pandas库操作CSV文件总结(一)CSV格式文件 1.说明 CSV是一种以逗号分隔数值的文件类型,在数据库或电子表格中,常见的导入导出文件格式就是C...
    99+
    2022-06-02
    python对csv文件处理 pythoncsv文件的操作 python 读取csv文件数据
  • python操作csv格式文件之csv.DictReader()方法
    目录简单使用csv.DictReader()方法使用csv.DictReader()之fieldnames参数使用csv.DictReader()之restkey参数使用csv.Di...
    99+
    2022-11-11
  • PHP常见的文件操作方式介绍
    这篇文章主要讲解了“PHP常见的文件操作方式介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP常见的文件操作方式介绍”吧!1.打开文件resource fopen ...
    99+
    2023-06-17
  • python文件常用操作方法有哪些
    文件的一般操作步骤打开文件或创建新文件:使用相应的编程语言和对应的库或模块打开一个已经存在的文件或者创建新文件。读取文件内容或向文件中写入内容:通过读取文件内容或向文件中写入内容来实现对文件的操作,可以使用相应的方法和函数来实现。处理文件数...
    99+
    2023-05-20
    Python
  • 文件操作:Python 中的常见问题及解决方法
    在 Python 中,文件操作是非常常见的一种操作,我们可以通过打开文件、读取文件、写入文件等操作来对文件进行处理。但是在实际使用中,我们可能会遇到一些问题,例如文件不存在、文件权限不足等问题。本文将介绍 Python 中文件操作的常见问...
    99+
    2023-07-30
    数组 文件 ide
  • Python中文件操作的常见问题及解决方法
    Python中文件操作的常见问题及解决方法摘要:文件操作是Python编程中非常常见的任务之一。然而,有时会遇到一些常见的问题,如文件不存在、文件写入错误等。本文将介绍一些常见问题,并提供相应的解决方法和代码示例。一、文件操作的常见问题文件...
    99+
    2023-10-22
    文件读取问题 文件写入问题 文件路径问题
  • Python中常见字符串去除空格操作的方法有哪些
    这篇文章将为大家详细讲解有关Python中常见字符串去除空格操作的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1:strip()方法去除字符串开头或者结尾的空格>>>&nbs...
    99+
    2023-06-25
  • Python对PDF文件的常用操作方法有哪些
    这篇文章主要介绍“Python对PDF文件的常用操作方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python对PDF文件的常用操作方法有哪些”文章能帮助大家解决问题。工具python3....
    99+
    2023-06-30
  • Python中最常见的文件操作技巧有哪些
    本篇内容介绍了“Python中最常见的文件操作技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!打开&关闭文件读取或写入文件前...
    99+
    2023-06-16
  • 解决python将xml格式文件转换成txt文件的问题(xml.etree方法)
    概述 先来介绍一下xml格式的文件,从数据分析的角度去看xml格式的数据集,具有以下的优点开放性(能在任何平台上读取和处理数据,允许通过一些网络协议交换xml数据)、简单性(纯文本,...
    99+
    2022-11-12
  • Python 5种常见字符串去除空格操作的方法
    目录1:strip()方法2:lstrip()方法3:rstrip()方法4:replace()方法5: join()方法+split()方法1:strip()方法 去除字符串开头或...
    99+
    2022-11-12
  • C语言中常见的文件操作方法是什么
    今天小编给大家分享一下C语言中常见的文件操作方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.为什么使用文件大家在...
    99+
    2023-07-02
  • Python中的文件操作方法有哪些
    这篇文章主要介绍“Python中的文件操作方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的文件操作方法有哪些”文章能帮助大家解决问题。一、文件的编码计算机中有许多可用编码:U...
    99+
    2023-07-04
  • Python操作Excel文件的方法有哪些
    本篇内容介绍了“Python操作Excel文件的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数据处理是 Python 的一大应用...
    99+
    2023-06-16
  • Go语言中XML文件的读写操作方法有哪些
    这篇文章主要介绍“Go语言中XML文件的读写操作方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Go语言中XML文件的读写操作方法有哪些”文章能帮助大家解决问题。XML(extensible...
    99+
    2023-07-05
  • java中常用的文件操作方法有哪些
    这篇文章将为大家详细讲解有关java中常用的文件操作方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。常用的文件的操作方法public class FileUtility { public stat...
    99+
    2023-06-03
  • Python对PDF文件的常用操作方法详解
    目录工具从PDF中提取文本旋转和叠加页面加密PDF文件创建PDF文件补充工具 python3.7 Pycharm PDF PyPDF2 reportlab 从PDF中提取文本 PyP...
    99+
    2022-11-11
  • 深入了解C语言中常见的文件操作方法
    目录1.为什么使用文件2.什么是文件2.1文件分类2.2 文件名3.文件的打开和关闭3.1文件指针3.2 如何使用文件指针4.文件的读写1.为什么使用文件 大家在写程序的时候有没有一...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作