#!/usr/bin/env python
# -*- coding;utf-8 -*-
"""
ET.XML和ET.parse的对比
1、返回对象差异:
ET.XML:Returns an Element instance,xml.etree.ElementTree.Element对象不具有写的功能
ET.parse:返回ElementTree对象,xml.etree.ElementTree.ElementTree对象才具有写的功能
2、传入参数差异:
XML(text, parser=None):*text* is a string containing XML data
parse(source, parser=None):*source* is a filename or file object containing XML data
"""
from xml.etree import ElementTree as ET # 方式一
# 打开文件,读取XML内容
str_xml = open("first.xml").read() # 将字符串解析成xml特殊对象,放入内存,root1代表xml的根节点,它是Element的对象,没有可写功能,不能写入文件
root1 = ET.XML(str_xml) # 只能解析字符串,不能解析文件,Returns an Element instance
print(root1, type(root1))
# 错误:root1.write("file3.xml") 原因:xml.etree.ElementTree.Element' object has no attribute 'write'
# root1为xml的根节点,代表xml字符串
# 要保存的话要使用根节点(Element的对象)创建ElementTree对象
tree1 = ET.ElementTree(root1) # 返回ElementTree对象
print(tree1, type(tree1))
tree1.write("tree1.xml") # 方式二
# 直接解析xml文件,tree具有可读功能,可以使用write方法写入文件
tree2 = ET.parse("first.xml") # 解析文件,不能解析字符串,返回ElementTree对象 # 获取xml文件的根节点,Return root element of this tree
root2 = tree2.getroot()
# 错误:root2.write("file4.xml") 原因:xml.etree.ElementTree.Element' object has no attribute 'write'
print(root2, type(root2))
tree2.write("tree2.xml")

  

Python全栈开发:XML与parse对比的更多相关文章

  1. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  2. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  3. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

  4. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

  5. Python全栈开发【基础四】

    Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...

  6. Python全栈开发【基础三】

    Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...

  7. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

  8. Python全栈开发【基础一】

    Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与wh ...

  9. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

  10. Python全栈开发

    Python全栈开发 一文让你彻底明白Python装饰器原理,从此面试工作再也不怕了. 一.装饰器 装饰器可以使函数执行前和执行后分别执行其他的附加功能,这种在代码运行期间动态增加功能的方式,称之为“ ...

随机推荐

  1. 如何通过编程发现Java死锁

    本文由 ImportNew - rookie_sam 翻译自 Dzone.欢迎加入翻译小组.转载请见文末要求. 死锁是指,两个或多个动作一直在等待其他动作完成而使得所有动作都始终处在阻塞的状态.想要在 ...

  2. NtOpenProcess被HOOK,跳回原函数地址后仍然无法看到进程

    点击打开链接http://www.ghoffice.com/bbs/read-htm-tid-103923.html

  3. 剑指offer——04从尾到头打印链表

    题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList.   有多种方法. class Solution { public: vector<int> printListFr ...

  4. Scala 学习2

    去map里面的数据 scala> val map = Map("a"->1, "b"->2, "c"->3) map ...

  5. 15-MySQL-Ubuntu-数据表的查询-聚合函数(四)

    聚合函数 (1)count() 统计总数 查询男性总数 select count(*) as 男性 from students where gender=1; (2)max() 最大值 查询男性中年龄 ...

  6. spring MVC <mvc:annotation-driven>

    研究SpringMvc 3.2的<mvc:annotation-driven>默认干了什么 如果不配置其他参数,大致相当于以下的配置文件(参考自org.springframework.we ...

  7. pytorch clamp 与clamp_区别

    pytorch clamp 与clamp_ ,有下划线的表示修改并付给自身,无下划线的表示需要返回处理后的值,比如: h = k.clamp(min=0) #将结果存入h,k保留原值 k.clamp_ ...

  8. JS函数 返回值的函数 return sum;或者result = add2(3,4);

    返回值的函数 思考:上一节函数中,通过"document.write"把结果输出来,如果想对函数的结果进行处理怎么办呢? 我们只要把"document.write(sum ...

  9. Android开发 string.xml资源添加参数

    挖坑:参考:https://www.cnblogs.com/leelugen/p/6685905.html

  10. Fence Obstacle Course

    Fence Obstacle Course 有n个区间自下而上有顺序的排列,标号\(1\sim n\),第i个区间记做\([l_i,r_i]\),现在从第n个区间的起点s出发(显然s在\([l_n,r ...