xml模块

  1. xml结构

xml是种实现不同语言或程序之间进行数据交换的协议,跟json差不多,但没json使用简单。但是因为历史遗留问题,至今很多行业依然使用xml这种数据格式。

xml的格式如下,是通过<>节点来区别数据结构的。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <friendsinfo>
  3. <frd age="22" name="任盼晨">
  4. <info qq="1114893928" wechat="Dmgwood" />
  5. </frd>
  6. <frd age="22" name="袁靖">
  7. <info qq="2410152779" wechat="wxid_2vykc0sjoiie21" />
  8. </frd>
  9. <frd age="22" name="卫一帆">
  10. <info qq="97280940" wechat="oOC" />
  11. </frd>
  12. <frd age="22" name="胡文涛">
  13. <info qq="2522864970" wechat="hu2522864970" />
  14. </frd>
  15. </friendsinfo>
  1. 语法结构
  • 任何的起始标签都必须有一个结束标签。 <> </>
  • 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于号之前紧跟一个斜杠(/),例如,解析器会将其翻译成
  • 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签。这好比将起始和结束标签看作是数学中的左右罗浩:在没有关闭所有的内部括号之前,是不能关闭外面括号的。
  • 所有的特性都必须有值。
  • 所有的特性都必须在值得周围加上双引号。
  • 一个标签的组成部分包括:标签名、属性名以及属性值、还有文本内容(可以没有)

双标签的写法:

  1. <tagename '属性名称'="属性值">文本内容</tagname>

单标签的写法:

  1. <tagename 属性名称="属性值"/>

总结:xml也是一种中间格式,也属于序列化方式之一,与json比较,同样的数据json会更小,效率更高;xml需要根据文档结构手动解析,而json直接可以转为python数据对象。

  1. xml模块用法
  1. # d.xml
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <studentinfo>
  4. <stu age="20" name="张三">
  5. <girlfriend age="19" name="张三的女朋友" />
  6. </stu>
  7. <stu age="20" name="李四">
  8. <girlfriend age="19" name="李四的女朋友" />
  9. </stu>
  10. <age num="1">
  11. <age num="2">
  12. <age num="3">
  13. </age>
  14. </age>
  15. </age>
  16. <age>
  17. </age>
  18. </studentinfo>
  1. import xml.etree.ElementTree as ElementTree
  2. tree = ElementTree.parse('d.xml')
  3. rootTree = tree.getroot()
  4. # 三种获取标签的方式
  5. # 1. 获取所有人的年龄,iter用于在全文范围获取标签
  6. for item in rootTree.iter('age'):
  7. # 一个标签三个组成部分
  8. print(item.tag) # 标签名称
  9. print(item.attrib) # 标签的属性
  10. print(item.text) # 文本内容
  11. # 2. 从当前标签的子标签中找到一个名称为age的标签,如果有多个,找到的是第一个
  12. print(rootTree.find('age').attrib)
  13. # 3. 从当前标签的子标签中找到所有名称为age的标签
  14. print(rootTree.findall('age'))
  15. # 获取单个属性
  16. stu = rootTree.find('stu')
  17. print(stu.get("age"))
  18. print(stu.get("name"))
  19. # 删除子标签
  20. rootTree.remove(stu)
  21. # 添加子标签
  22. newTag = ElementTree.Element('这是新标签', {'一个属性': '值'})
  23. rootTree.append(newTag)
  24. # 写入文件
  25. tree.write('f.xml', encoding='utf-8')

python模块之xml的更多相关文章

  1. Python模块 shelve xml configparser hashlib

    常用模块1. shelve 一个字典对象模块 自动序列化2.xml 是一个文件格式 写配置文件或数据交换 <a name="hades">123</a>3. ...

  2. python模块:xml

    """Core XML support for Python. This package contains four sub-packages: dom -- The W ...

  3. python模块(shelve,xml,configparser,hashlib,logging)

    1.1shelve模块 shelve 模块比pickle模块简单,只有一个open函数,返回类似字典对象,可读可写:key必须为字符串, 而值可以是python所支持的数据类型. shelve模块主要 ...

  4. python模块:xml.etree.ElementTree

    """Lightweight XML support for Python. XML is an inherently hierarchical data format, ...

  5. python模块:xml.dom.minidom

    """Simple implementation of the Level 1 DOM. Namespaces and other minor Level 2 featu ...

  6. python模块之xml.etree.ElementTree

    xml.etree.ElementTree用于解析和构建XML文件 <?xml version="1.0"?> <data> <country nam ...

  7. 7.python模块补充

    此文章是对上节文章模块的补充 一,xml模块 xml是实现不同语言或程序之间进行数据交换的协议,可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言.xml的格式如下 ...

  8. Python(文件、文件夹压缩处理模块,shelve持久化模块,xml处理模块、ConfigParser文档配置模块、hashlib加密模块,subprocess系统交互模块 log模块)

    OS模块 提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname")  改变当前脚本工作目 ...

  9. python 解析XML python模块xml.dom解析xml实例代码

    分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...

随机推荐

  1. Java类更改常量后编译不生效

    在Java文件中,指向编译时static final的静态常量, 会被在运行时解析为一个局部的常量值(也就是说静态常量在编译后,成为了常量,而不是原先的代码).这对所有的基础数据类型(就像int ,f ...

  2. python_flask 基础巩固 (DEBUG模式)

    默认情况下flask不会开启DEBUG模式,开启DEBUG模式后,flask会在每次保存代码的时候自动的重新载入代码,并且如果代码有错误,会在终端进行提示. 开启DEBUG模式有四种方式: 1.直接在 ...

  3. 计算机网络六:无线局域网、IEEE 802.11、WIFI和蓝牙

    无线局域网.IEEE 802.11.WIFI和蓝牙 ㈠无线局域网 1.定义       无线局域网络(Wireless Local Area Networks),简称WLAN.它是相当便利的数据传输系 ...

  4. openXML写Excel列组合

    重要代码: DOS.SheetData sheetData = new DOS.SheetData(); DOS.Columns columns = new DOS.Columns(); DOS.Co ...

  5. 【MySql】启动/停止

    一.启动 1.查看启动命令所在目录 macdeMacBook-Pro:~ mac$ ps -ef|grep mysql 2.进入命令目录 macdeMacBook-Pro:~ mac$ cd /usr ...

  6. 在windows上安装VTK

    看了很多教程,花了1天半的时间装上了,记录下. 前置条件:我安装了VS2015,用来编译工程. 参考资料 官方:http://www.vtk.org/Wiki/VTK/Building 安装:http ...

  7. Django 信号、中间件、i18n 专题

    信号 Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 1. Django内置信号 Model signals pr ...

  8. web browser 发展史

    浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,用来显示在万维网或局域网等内的文字.图像及其他信息,便于人们的浏览. Tim Berners-Lee是第一个使 ...

  9. C++ 知识回顾总结 -- 指针

    指针是一种特殊类型的变量,用于存储值的地址,因此,指针名表示的是地址.*运算符被成为间接值或解除引用运算符,将其应用于指针,可以得到该地址存储的值. 对指针的理解可以参照以下的例子: #include ...

  10. Base 底层库开源项目总结

    在Android开发中,我们经常使用一些开源的项目,一般情况下,这些开源项目都是基于开源的底层库进行的开发,以适配各自的用户场景.下面来列举一下本人收藏或Star的项目: 一.JavaCV 项目地址: ...