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)














  • 相关阅读:
    Justoj 2389: 拼接三角形 二分查找
    P4513 小白逛公园(线段树求区间最大子段和)
    勾股数
    费马大定理
    D1. Kirk and a Binary String (easy version)
    Find the median(线段树离散化+区间更新)
    String
    最小表示法
    扩展KMP模板(学习)
    K-th Closest Distance
  • 原文地址:https://www.cnblogs.com/huangchaonan/p/10120075.html
Copyright © 2011-2022 走看看