zoukankan      html  css  js  c++  java
  • 使用python操作XML增删改查

    使用python操作XML增删改查

    什么是XML?

    • XML 指可扩展标记语言(EXtensible Markup Language)
    • XML 是一种标记语言,很类似 HTML
    • XML 的设计宗旨是传输数据,而非显示数据
    • XML 标签没有被预定义。您需要自行定义标签。
    • XML 被设计为具有自我描述性。
    • XML 是 W3C 的推荐标准

    参考文献

    官方文档

    导入模块

    import xml.etree.ElementTree as ET
    

    读取解析XML

    可以从xml文件、字符串中解析
    新建一个xml文件

    	<?xml version="1.0" encoding="UTF-8"?>
    	<students>
    		<student>
    			<name>张三</name>
    			<age>18</age>
    			<score>89</score>
    		</student>
    		<student>
    			<name>李四</name>
    			<age>19</age>
    			<score>81</score>
    		</student>
    		<student>
    			<name>王五</name>
    			<age>17</age>
    			<score>92</score>
    		</student>
    	</students>
    

    从xml文件中读取,使用getroot()获取根节点,得到的是一个Element对象

    tree = ET.parse('students.xml')
    root = tree.getroot()
    

    从字符串变量中读取,返回的是Element对象

    root = ET.fromstring(country_data_as_string)
    

    访问XML

    每个Element都有以下属性

        #tag = element.text #访问Element标签
        #attrib = element.attrib #访问Element属性
        #text = element.text #访问Element文本
    
    	for element in root.findall('student'):
    	    tag = element.tag #访问Element标签
    	    attrib = element.attrib #访问Element属性
    	    text = element.find('name').text #访问Element文本
    	    print(tag, attrib, text)
    
    	 print(root[0][0].text) #子节点是嵌套的,我们可以通关索引访问特定的子节点
    

    查找元素

    Element 提供了一些方法来帮助我们对他的子节点进行遍历

    1、Element.iter()

    	for student in root.iter('student'):
    	    print student[0].text
    	out:
    	张三
    	李四
    	王五
    

    2、Element.findall()

    	for element in root.findall('student'):
    	    name = element.find('name').text
    	    age = element.find('age').text
    	    score = element.find('score').text
    	    print name,age,score
    	out:
    	张三 18 89
    	李四 19 81
    	王五 17 92
    

    修改XML

    • ElementTree.write()将构建的XML文档写入文件。
    • Element.text = '' 直接改变字段内容
    • Element.append(Element) 为当前的Elment对象添加子对象
    • Element.remove(Element) 删除Element节点
    • Element.set(key, value) 添加和修改属性
    • ElementTree.write('filename.xml') 写出(更新)XMl文件

    创建XML

    • ElementTree.Element() 构建一个节点
    • ElementTree.SubElement(Element,tag) 构建一个子节点
    	a = ET.Element('a')  
    	b = ET.SubElement(a, 'b')  
    	c = ET.SubElement(a, 'c')  
    	print ET.dump(a)  
    	out:
    	&lt;a>&lt;b />&lt;c />&lt;/a>
    

    总结

    最近写东西需要都输出xml,所以学习了XML以及XML在python的使用。更多内容可以看官方文档。

  • 相关阅读:
    我们应该如何防范黑客的攻击? 有哪些棘手问题?
    德国网络安全公司Avira被收购,估值为1.8亿美元
    物联网会成为黑客攻击的目标,智慧城市如何才安全?
    因新型冠状病毒,笔记本电脑销售增长,人们寻求更好的设备进行远程工作
    从电脑维修工到互联网大佬,他是怎么做到的?解读郭盛华最真实的传奇生涯
    企业防御网络风险保护计划的5个步骤
    加载失败图片加样式
    请求接口无权限
    iview button根据条件 disabled可用或者不可用
    vue跨组件传值
  • 原文地址:https://www.cnblogs.com/luhuan/p/8342081.html
Copyright © 2011-2022 走看看