zoukankan      html  css  js  c++  java
  • xml模块

    """
    什么xml
    可扩展的标记语言
    标记翻译为标签,用标签来组织数据的语言

    也是一种语言,可以用来自定义文档结构

    相比json 使用场景更加广泛,但是语法格式相比json 复杂很多

    什么时候使用json
    前后台交互数据时 使用json
    什么时候使用xml
    当需要自定义文档结构时 使用xml
    比如java中经常用xml来作为配置文件
    作为配置文件 常见操作就是通过程序去读取配置信息
    而修改增加删除,一般是交给用户来手动完成

    标签的叫法 node(节点) elment(元素) tag(标签)
    """

    # 需求从conuntrys中获取所有的国家名称
    # 取别名 可以用于简化书写
    import xml.etree.ElementTree as ET
    tree = ET.parse("countrys")
    # 获取根标签
    root = tree.getroot()


    # 第一种获取标签的方式
    # iter() 全文查找
    # 获取迭代器 如果不指定参数 则迭代器迭代的是所有标签
    # print(root.iter())

    # 获取迭代器 如果指定参数 则迭代器迭代的是所有名称匹配的标签
    # for e in root.iter("rank"):
    # print(e)


    # 第二种获取标签的方式
    # 在当前标签下(所有子级标签)寻找第一个名称匹配的标签
    # print(root.find("rank"))

    # 第三种获取标签的方式
    # 在当前标签下(所有子级标签)寻找所有名称匹配的标签
    # print(root.findall("rank"))


    # 练习 找到新加坡中year这个标签
    # 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.text)




    # 在程序中修改文档内容
    # 把所有year标签的文本加1

    # for e in root.iter("year"):
    # e.text = str(int(e.text) + 1)
    #
    # # 做完修改后要将修改后的内容写入文件
    # tree.write("countrys")



    # 把新加坡国家删除
    # for e in root.findall("country"):
    # print(e)
    # if e.attrib["name"] == "Singapore":
    # # 删除时 要通过被删除的父级标签来删除
    # root.remove(e)
    #
    #
    # tree.write("countrys2")


    # 用程序将中国的信息写入文档中
    # 添加时 也需要将要添加的数据做成一个Element
    c = ET.Element("country",{"name":"china"})

    # 在国家下有一堆子标签
    ranke = ET.Element("ranke",{"updated":"yes"})
    c.append(ranke)

    year = ET.Element("year")
    year.text = "2018"
    c.append(year)


    #添加到root标签中
    root.append(c)
    tree.write("countrys2")


    # 一般不会通过程序 去修改 删除 和添加
    # 总结:
    # 什么时候应该使用XML格式
    # 当你需要自定文档结构时 (XML最强大的地方就是结构)
    # 前后台交互不应该使用



    代码生成xml文档:



    import xml.etree.ElementTree as ET

    # 创建根标签
    root = ET.Element("root")
    root.text = "这是一个XML文档!"


    c = ET.Element("country",{"name":"china"})
    root.append(c)



    tree = ET.ElementTree(root)
    # 参数: 文件名称 编码方式 是否需要文档声明
    tree.write("new.xml",encoding="utf-8",xml_declaration=True)














  • 相关阅读:
    linux之awk命令
    HDU 2097 Sky数 进制转换
    HDU 2077 汉诺塔IV
    HDU 2094 产生冠军 dfs加map容器
    HDU 2073 叠框
    HDU 2083 简易版之最短距离
    HDU 2063 过山车 二分匹配
    天梯 1014 装箱问题
    天梯 1214 线段覆盖
    天梯 1098 均分纸牌
  • 原文地址:https://www.cnblogs.com/huangchaonan/p/10120075.html
Copyright © 2011-2022 走看看