#!/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")

  

最新文章

  1. 让hammer完美支持Pixi.js - 2D webG库
  2. #1000 A + B (hihoCoder)
  3. rtf格式的一些说明,转载的
  4. Eclipse常用的快捷键
  5. Mac 如何安装Homebrew?
  6. robots
  7. nginx配置相关
  8. MVC controller and View
  9. C++ Primer 学习笔记_67_面向对象编程 --转换与继承、复制控制与继承
  10. Python学习入门基础教程(learning Python)--3.1Python的if分支语句
  11. P3003 [USACO10DEC]苹果交货Apple Delivery
  12. linux报错:命令未找到
  13. PHP-MVC和Smarty初探笔记
  14. C#System.Text.RegularExpressions.Regex使用(一) .
  15. Chromedriver executable needs to be in path 解决办法
  16. Java爬虫——常用的maven依赖
  17. 设计模式のMediatorPattern(中介者模式)----行为模式
  18. 基于HTTP可供浏览器调用的本地打印程序
  19. Hibernate注意项
  20. 【LeetCode】230. Kth Smallest Element in a BST (2 solutions)

热门文章

  1. java中get请求的中文乱码问题
  2. random,time,sys,os,序列化模块
  3. Scala 学习2
  4. 8张图带你轻松温习Java知识
  5. drools原生drl规则文件的使用
  6. spring MVC 转发与重定向(传参)
  7. Flutter 打包报错 : Unknown FLUTTER_BUILD_MODE: xxx
  8. ionic js 侧栏菜单 把主要内容区域从一边拖动到另一边,来让左侧或右侧的侧栏菜单进行切换
  9. 关于jquery.validate.js的用法
  10. python2与python3编码