1. xml模块

<father name="jack"> # 属性的值必须加双引号
<son>
标签的关闭顺序,与开启顺序相反,
最先开启的最后关闭,最后开启的,最后关闭
</son>
</father>
根标签只能有一个
JAVA的配置文件很多用XML格式写的
HTNL也属于XML 1.什么是xml
是可扩展的标记语言
标记就是标签,用标签来组织数据的语言 也是一种语言,可以用来自定义文档结构
相比json,使用场景更加广泛,但是语法格式相比jason复杂很多 什么时候使用json
前后台需要交互数据时,使用jason 什么时候使用xml
当需要自定义文档结构时,使用xml 比如java中,经常使用xml文件来作为配置文件 作为配置文件,常见操作就是通过程序去读取配置信息
而修改增加删除,一般是交给用户来手动完成 # 标签的叫法,node(节点),element(元素),tag(标签) #需求:从countrys读取内容 from xml.etree.ElementTree as ET # 取别名,可以用于简化书写
tree = ET.parse('countrys')
root = tree.getroot() #获取根标签

第一种获取标签的方式iter()

全文查找,在整个树上都查找一遍
print(root.iter()) # 获取迭代器,如果不指定参数,则迭代器迭代的是所有标签 print(root.iter("country")) # 如果指定参数,则迭代器迭代的是所有名称匹配的标签

第二种获取标签的方式find()

root.find('country') #在当前标签下寻找第一个名称匹配的标签

    root.find('rank') # 在当前标签下(所有子级标签),寻找第一个名称匹配的标签

第三种获取标签的方式 findall()

在当前标签下(所有子级标签),查找所有名称匹配的标签
root.findall('rank') # 取不到内容,只找一层内容 1.拿到所有国家标签
for e in root.iter("country")
print(e.tag) 标签的名称
print(e.attrib) 标签的属性(字典类型)
print('e.text') 文本信息
if e.attrib['name'] == 'Singapore'
y = e.find("year")
print(y) 在程序中修改文档内容
把所有year标签的文本加1
for e in root.iter("year")
e.text = str(int(e.text) + 1) #做完修改后要将修改后的内容写入文件
tree.write("countrys") #把新加坡删除
for e in root.findall('countrys'):
if e.attrib['name'] == 'Singapore':
# 删除时,要通过被删除的父级标签来删除
root.remove(e)
tree. write('countrys2') #用程序将中国的信息写入文档中 添加时 也需要将要添加的数据做成一个Element标签
c = ET.Element("country",{"name":"china"})
# 在国家下添加一堆子标签
rank = ET.Element("rank",{"update":"yes"})
c.append(rank) year = ET.Element("year")
year.text = 2018
c.append(year) root.append(c) # 先把要增加的数据写成xml格式,然后添加,一般不会通过程序增删改
import xml.etree.ElementTree as ET
#创建根标签
root = ET.Elment('root')
root.text('这是一个xml文档')
res = ET.dump(root) # 把一个元素和他的子级元素都显示在stdout上
c = ET.Element('country',{'name':'china'})
root.append(c) tree = ET.ElementTree(root)
# 参数:文件名称,编码方式,是否需要文档说明
tree.write('new_xml',encoding = 'utf-8',xml_declaraiton = True)

什么时候应该使用xml格式,前后台交互不应该使用

当你需要自定义文档结构时(XML最强大的地方就是结构)

最新文章

  1. 插入排序-java
  2. 【转】使用jquery animate创建平滑滚动效果
  3. [转]jQuery.validate插件在失去焦点时执行验证代码
  4. 这是一个比较清晰的SSH框架结构,有兴趣的博友可以看一下
  5. sublime text 3 修改文件保存编码
  6. iOS开发-微博客户端-基本界面搭建(01)
  7. 黄聪:PHP使用Simple_HTML_DOM遍历、过滤及保留指定属性
  8. ORA-01034/ORA-27101解决
  9. SRM 585 DIV 1 总结
  10. C++游戏服务器的性能优化
  11. linux 内核的各种futex
  12. 十、VueJs 填坑日记之在项目中使用Amaze UI
  13. Linux 普通用户之间免密登陆
  14. Too many open files问题解决
  15. U66785 行列式求值
  16. 对TIMIT数据进行格式转换(SPHERE2WAV(RIFF))
  17. js编写轮播图,广告弹框
  18. LinQ to sql 各种数据库查询方法
  19. Android 集成高德地图
  20. Cannot connect to the Docker daemon at unix:///var/run/docker.sock.问题解决

热门文章

  1. 重新指派usb转串口模块在linux系统中的设备调用名称
  2. Python: 对CSV文件读写 和 Md5加密
  3. Spring Cloud (6)A config 服务端配置 与github通信
  4. JavaScript:今天是今年第几周?
  5. elasticsearch相关
  6. MM-RGV、AGV 、IGV是什么
  7. django 之manytomany
  8. Unable to locate Spring NamespaceHandler for XML schema namespace
  9. java Run to Line
  10. Oracle数据库中的数据出错的解决办法