zoukankan      html  css  js  c++  java
  • xml模块、项目开发过程

    一.XML模块

    xml指的是可扩展标记语言,是一种定义电子文档结构和描述的语言,可以用来标记数据、定义数据类型。

    什么时候用xml?

    当需要自定义文档结构时,使用xml。在java中经常会使用xml来作为配置文件。而作为配置文件经常的操作是通过程序去读取配置文件信息。标签的叫法:node(节点),elment(元素),tag(标签)

    xml文档格式:

    一个完整的标签分为三个部分:

    <person name="jack">hello i am a person</person>

    1.标签名(tagname):person

    2.属性(attribute):name值为jack

    3.文本(text):hello i am a person

    属性和文本都是可选的,可以定义一个空标签:

    <person></person>

    其他格式要求:

    1.任何的起始标签都必须有一个结束标签。

    2.可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如。XML解析器会将其翻译成。

    3.标签必须按顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。

    4.所有的属性都必须有值。

    5.所有的特性都必须在值的周围加上双引号。

    6.最外层必须有且只能有一个标签,称为根标签

    xml与json的对比:

    json主要用于前后台数据交互,json使用起来比xml简单,而xml支持的数据类型理论上是不受限制的,因为可以完全自定义标签的结构和含义,使用场景也非常广泛,不局限于前后台的数据交互,在一些语言中还经常作为配置文件来使用,而且xml出现的时间比较早,早期项目都是用的xml。

    1.三个用于查找标签函数
    
    
    iter("标签名") #全文查找
    find("标签名") #查找子节点匹配的第一个
    findall("标签名") #查找字节点匹配的所有
    2.访问标签的内容
    
    
    element.tag 获取标签名
    element.attrib 获取属性
    element.text 获取文本
    3.修改文档内容
    
    
    elment.tag = "标签名"
    element.text = "文本"
    element.set("属性名","属性值")
    4.删除节点
    
    
    root.remove(标签对象)
    5.添加子标签
    
    
    #创建标签对象
    year2=ET.Element('year2') # 指定名称
    year2.text='新年' 
    year2.attrib={'update':'yes'}
    #添加
    country.append(year2) #往country节点下添加子节点
    删除添加修改后都需要调用write写入到文件
    
    
    tree.write("文件名"),#注意文档对象才能执行写入操作
    View Code
    #countrys.xml
    
    <data>
        <country name="Liechtenstein">
            <rank updated="yes">2</rank>
            <year>2009</year>
            <gdppc>141100</gdppc>
            <neighbor direction="E" name="Austria" />
            <neighbor direction="W" name="Switzerland" />
        </country>
        <country name="Singapore">
            <rank updated="yes">5</rank>
            <year>2012</year>
            <gdppc>59900</gdppc>
            <neighbor direction="N" name="Malaysia" />
        </country>
        <country name="Panama">
            <rank updated="yes">69</rank>
            <year>2012</year>
            <gdppc>13600</gdppc>
            <neighbor direction="W" name="Costa Rica" />
            <neighbor direction="E" name="Colombia" />
        </country>
    </data>
    
    
    # 需求从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最强大的地方就是结构)
    # 前后台交互不应该使用
    View Code
    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)
    代码生成xml文档

    二.项目开发过程

    项目的生命周期:

    1.需求分析

    2.项目设计

    3.项目开发

    4.项目测试

    5.上线运行

    6.维护更新

     项目的设计:

     最经典的结构是三层结构,一个应用程序的本质,就是在帮用户处理数据,分为三步:

    1.用户通过某种方式将数据交给程序 (手机APP 浏览器,PC段程序)
    2.程序在拿到数据之后进行分析 判断数据是否是正确的 (python c,java)
    3.将正确数据进行存储 (数据库 文件)

    在三层结构中,将整个程序分为三个部分:

    1.用户界面层 负责接收用户数据 ,或者展示数据给用户
    2.业务逻辑层 负责处理用户界面层得到的数据,进行判断 验证
    3.数据访问层(持久层) 负责帮助业务逻辑层 保存数据 或是读取数据
    与程序处理数据的三步刚好是对应

    注: 界面层与数据层不应该直接通讯当然不分层也可以,但是随着项目功能越来越多,你的代码结构越来越乱,从而带来结果时 ,维护困难,无法扩展,所以要分层,分成最终目的尽可能的实现 高内聚 低耦合(相关都聚集在一起,不想关的功能拆的干干净净(各模块间的影响降低))

    在项目开发中会有三个文档:
    1.需求分析书
    2.接口文档(前后台制定相同的标准 api) 接口指的是后台提供前台用于完成某个功能的函数
    3.原型图 这是美工画出来的图 前段程序员负责按照原型图 用代码实现

     
  • 相关阅读:
    写的一个split函数
    从头開始写项目Makefile(十):make内嵌函数及make命令显示
    MySQL 中文乱码解决
    查看DNS主机名解析的主机IP并向DNSserver进行DNS域名解析
    【iOS开发-90】CALayer图层:自己定义图层,图层的一些动画
    iconv 中文截断问题的解决方法
    linux有用技巧:使用ntfs-3g挂载ntfs设备
    SQL Sever——远程过程调用失败(0x800706be)
    USACO ariprog 暴力枚举+剪枝
    Shell编程(脚本)的经常使用命令和语句
  • 原文地址:https://www.cnblogs.com/wangke0917/p/10101700.html
Copyright © 2011-2022 走看看