#!/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. Css实现Div在页面上垂直居中显示

    方法一 <html>    <head>        <title>垂直居中</title>        <style type=" ...

  2. Mysql命令增加、修改、删除表字段

    alter add 命令用来增加表的字段: alter add命令格式:alter table 表名 add字段 类型 其他:如下所示: ) comment '单位' alter drop 命令删除表 ...

  3. <读书笔记>001-以解决问题为导向的python编程实践

    以解决问题为导向的python编程实践 0.第0章:计算机科学 思考:计算机科学是否为计算机编程的简称? 编程的困难点:1.同时做2件事(编程语言的语法.语义+利用其解决问题)  2.什么是好程序(解 ...

  4. python自动化基础(参数化)

    一.创建加法类 #定义一个数学加法类 class Mathmethod(): def add(self,a,b): return(a+b) def sub(self,a,b): return(a-b) ...

  5. Hive HA基本原理

  6. Python学习笔记(二)——列表

    Python学习笔记(二)--列表 Python中的列表可以存放任何数据类型 >>> list1 = ['Hello','this','is','GUN',123,['I','Lov ...

  7. AndroidStudio 搜索导入自己需要的库

    前言 在Androidx的库应用后,导致有需多系统组件库需要重新 implementation 升级为Androidx, 但是你可能会发现不知道怎么导入他们.  当然除了导入Android的组件库,还 ...

  8. JS去重算法

    1.遍历数组法 它是最简单的数组去重方法(indexOf方法) 实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中: var arr=[2,8,5, ...

  9. Sqlite多线程相关整理

    Sqlite多线程相关整理 Sqlite With MultiThreads 什么是线程安全? 当多个线程访问某个方法时,不管你通过怎样的调用方式.或者说这些线程如何交替地执行,我们在主程序中不需要去 ...

  10. Java 虚拟机 - ClassLoader

    ClassLoader定义 ClassLoader种类 BootStrapClassLoader无法在IDEA里面查看源代码,只能看JVM 源码才能找到. ExtClassLoader,会从Syste ...