• xml与面上对象初识


    一、XML

    """
    XML 全称 可扩展标记语言
    <tag></tag> 双标签
    <tag/> 单标签 没有文本 一般用于设计文档结构 例如换行等
    <tr/> 表示换行

    <tag style="color:red" age="18">12345</tag>
    一个标签的完整组成 有三个部分
    tag 是标签名称
    12345 是文本内容 text
    name = "jack" 是标签的属性

    其他的规范
    1.又开始就必须有结束
    2.所有属性值必须包含在双引号里面
    3.只能有一个根标签 (最外层只能有一个标签)
    4.开始标签和结束标签的顺序是相反的 最先打开谁 就最后关闭谁 最后打开的最先关闭
    文档声明可不写 主要是告诉浏览器 该怎么解析这个文件
    xml模块是自带的 不需要安装

    与json的区别
    xml 是一种可扩展的标记语言
    可以高度自定义文档的结构 数据类型 标签的含义等等
    所以扩展性远比JSON要强

    json更加适用于 前后台数据交换 优点 轻量级 跨平台 语法简洁
    xml更多用来作为配置文件 当然 python不太常用
    html就是一种xml
    """
    (1)#导入
    import xml.etree.ElementTree as ET
    (2)# 打开一个文档 得到一个元素树(XML文档)
    tree = ET.parse("test1.xml")
    (3)# 获取根标签
    root = tree.getroot()

    "遍历出子标签的方法"
    (1)# 遍历出root标签的所有子标签
    # for tag in root:
    # print(tag)

    (2)# 遍历出文档中所有标签
    # for tag in root.iter():
    # print(tag)

    (3)# 从root下查找第一个名字为country的子标签
    # country = root.find("country")
    # print(country)

    (4)# 从root下查找所有名字为country的子标签
    # countrys = root.findall("country")
    # print(countrys)

    (5)# 从root下查找所有名字为country的子孙标签
    for tag in root.iter("country"):
    print(tag)

    "查找标签总结"
    """
    解析xml得到一个tree对象后 查找标签的4种方式
    1.iter()
    如果没有参数则查找所有标签
    如果有参数则查找所有名字匹配的标签
    查找范围 为全文
    2.find()
    必须给参数
    查找当前标签的子标签 返回第一个名字匹配的
    3.findall()
    必须给参数
    查找当前标签的子标签 返回所有名字匹配的
    4.直接遍历某个标签
    返回的是这个标签的所有子标签
    """
    '其他方法'
    es = root.findall("country")
    获取某个标签的 标签名 属性 以及文本
    for e in es:
    print(e.tag) # 标签名称
    print(e.attrib) # 标签的所有属性 返回一个字典
    print(e.text) # 标签的文本内容

    "标签的增删改查"
    增和改
    (1)# 修改文本
    # root.text = "这是跟标签的文本"
    (2)# # 修改属性 没有则添加 有则覆盖
    root.set("name","jack")
    (3)# # 修改标签名字
    # root.tag = "data"
    #
    tree.write("test2.xml",encoding="utf-8",xml_declaration=True)

    把test1.xml 中所有gdppc删除
    (1)# remove 函数 需要一个标签作为参数 即要被删除的标签 然后只能有父标签来删除子标签
    # tree = ET.parse("test1.xml")
    # root = tree.getroot()
    #
    # for c in root.iter("country"):
    # gdppc = c.find("gdppc")
    # if gdppc != None:
    (2)# c.remove(gdppc)
    #
    # tree.write("test4.xml")
    添加
    (1)# 创建需要被添加的子标签
    new_tag = Element("ThisIsNewTag")
    (2)# 设置文本
    new_tag.text = "123"
    (3)# 添加到root下
    root.append(new_tag)
    (4)# 写入文件
    tree.write("test5.xml")

    二、面向对象

    1.面向对象是什么?
    面向对象是一种编程思想,让你不需要关心具体实现细节,而是关注对象
    2.面向对象与面向过程的优缺点对比 以及使用场景对比
    缺点:
    牵一发而动全身 扩展性非常低,可维护性差
    优点:
    将复杂的事情,简单化,并流程化
    应用场景:
    对扩展要求较低的程序
    系统内核,shell脚本,计算器啥的
    面向对象优点:
    不需要在关注具体的实现细节 可以更好的关注业务逻辑
    扩展性提高了,维护性高,复用性高
    缺点:
    对比面向过程而言.程序需要先设计,结构更复杂,编程复杂度提高了
    无法准确预知执行结果
    应用场景:
    对于扩展性要求较高的应用程序
    qq,微信,王者荣耀
    3.什么是对象 什么是类
    对象:具备某种特征与行为的集合体并且是具体存在的就称之为对象
    类: 某些具备相同特征和相同行为的集合体 ,是一种抽象概念
    4.类和对象的关系
    对象和类的关系
    在生活中 先有对象 再有类
    在代码中 必须现有类 才能产生对象 (因为你需要提前告诉计算机这个对象是什么样的有什么技能
    5.如何定义一个类
    使用class关键字来定义一个类
    6.如何创建对象
    # 调用类来获得一个对象
    # stu1 = Student()
    # stu1.say_hi()
    7.属性的访问顺序
    # 在访问时优先访问自己名称空间的内容 如果找不到 会自动找类中的属性
    8.类和对象的名称空间是独立的
    # 每个对象都会存储自己所在类的地址 可以使用__class__来访问
  • 相关阅读:
    Ugly Numbers
    Present
    Out of Hay
    Stars(树状数组或线段树)
    Humble Numbers
    Wireless Network
    Rank List
    Argus
    食物链
    Antenna Placement
  • 原文地址:https://www.cnblogs.com/huanghongzheng/p/10872053.html
Copyright © 2020-2023  润新知