xml模块

  1. xml结构

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

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

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

双标签的写法:

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

单标签的写法:

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

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

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

    文件操作无非两个,即:读.写 python 2.x: 文件句柄 = file('文件路径', '模式') python3.x: 文件句柄 = open('文件路径', '模式') 打开文件的模式有: ...

  2. 可遇不可求的Question之SQLSERVER触发器不支持多行插入操作篇

    描述: 我们经常遇到 insert table_a select * from table_b 这样的语句, 同时在表table_a中根据每一条新增的SQL语句,通过触发器来触发对应的一系列的后续操作 ...

  3. cordova 开发

    这个挺好用的, 确实 把一个 Android 和 IOS 的App 给生成了. html为前端, js调用 Java 或 object -C的代码. 加快了开发的进度 在不使用插件的基础上 ,基本实现 ...

  4. 【转】在Linux下安装python3

    原文链接:http://www.cnblogs.com/feng18/p/5854912.html 1.linux下安装python3 a. 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wg ...

  5. 每天学点SpringCloud(九):SpringCloud最常用配置详解

    Eureka 属性名 说明 默认值 eureka.server.enable-self-preservation 关闭注册中心的保护机制,Eureka 会统计15分钟之内心跳失败的比例低于85%将会触 ...

  6. 聊一聊Java如何接入招行一网通支付功能

    1.前提条件 相比较于支付宝和微信的支付功能接入这一块,银行相对来说更加严格,比如说支付宝,在你签约之前可以进行一些测试.但是银行来说就不是这样了,如果您现在要进行招行的支付功能开发的话,请务必先让相 ...

  7. Django项目settings配置redis连接

    CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", &q ...

  8. Python爬虫-萌妹子图片

    最近发现一个可以看图的地方,一张张翻有点累,毕竟只有一只手(难道鼠标还能两只手翻?).能不能下到电脑上看呢,毕竟不用等网速,还可以预览多张,总之很方便,想怎么就怎么,是吧? 刚好这几天在学python ...

  9. python Event_loop(事件循环)

    由于GIL全局解释器锁的存在,意味着在任何一个时刻,只有一个线程处于执行状态. (1)执行栈: 因为python是单线程的,同一时间只能执行一个方法,所以当一系列的方法被依次调用的时候,python会 ...

  10. Python super() 函数的概念和例子

    概念: super() 函数是用于调用父类(超类)的一个方法. super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO).重 ...