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.原型图 这是美工画出来的图 前段程序员负责按照原型图 用代码实现
转载于:https://www.cnblogs.com/wangke0917/p/10101700.html
xml模块、项目开发过程相关推荐
- 01 | 使用Gradle构建多模块项目
系列文章目录 01 | 使用Gradle构建多模块项目 02 | 架构师必备 - DDD领域驱动设计之落地实践 03 | 异常处理实践 - 抛异常+错误码 从今天开始,我将从无到有的搭建一套基于 Sp ...
- 五天入门SpringBoot(4)--多模块项目(对比visual studio)
1.创建框架应用 创建后,因为只是一个框架,可删除src目录以及src目录里所有内 2.创建King-Base模块项目 创建成功后,在主项目下将包含models标签 需要注意的是:此处的模块不会像vi ...
- springboot dubbo 多模块项目dubbo提供者和消费者配置及代码
注:本文只是介绍我成功使用springboot dubbo 多模块项目的配置及核心代码,若问题没得到解决或需要可运行的源码,文章末尾有说明. springboot集成dubbo过程坑太多,dubbo提 ...
- Maven学习总结(八)——使用Maven构建多模块项目
2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(八)--使用Maven构建多模块项目 在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分 ...
- 商城模块java_Java商城秒杀系统实战系列~构建SpringBoot多模块项目
摘要:本篇博文是"Java秒杀系统实战系列文章"的第二篇,主要分享介绍如何采用IDEA,基于SpringBoot+SpringMVC+Mybatis+分布式中间件构建一个多模块的项 ...
- 项目开发过程中的收获与思考
2013年7月,我正式毕业了,到公司入职,也就正式成为了一名菜鸟程序员.到今天,2014年1月3日,目前主要的工作是公司一个项目中的一个功能模块,到我进入项目组算起,已经过了四个月了.因此,想写点东西 ...
- Maven多模块项目中应用maven-tomcat-plugin热部署
Maven多模块项目中使用maven-tomcat-plugin热部署 比如有一个父模块xfl(类型为pom的maven项目),其中的pom.xml为: <modules> <mod ...
- 基于maven使用IDEA创建多模块项目
原文地址:http://blog.csdn.net/williamhappy/article/details/54376855 鉴于最近学习一个分布式项目的开发,讲一下关于使用IntelliJ IDE ...
- Spring Boot集成Dubbo多模块项目创建与配置
目录 概述 使用工具 环境搭建 1.父模块创建 2.创建子模块 多模块项目配置 一. 父模块pom配置 1.继承设置 2.使用dependencyManagement管理依赖版本号 3.使用prope ...
最新文章
- C 语言结构体_点运算符( . )和箭头运算符( - )的区别
- 利用 %20 替换 空格
- 盐城计算机中专学校,盐城市有哪些中专学校?
- mysql view 子查询_mysql – View的SELECT包含FROM子句中的子查询
- 怎么让cmd命令行不关闭或查看tomcat启动一闪而过的原因
- 分布式MySQL数据库中间件 mysqlda
- 寒冬已至,传统零售业如何打破僵局“逆境生长”
- How Do I? Videos for Devices
- jsp分页的常用写法
- 计算机没有鼠标用英语怎么说,鼠标用英语怎么说
- 动词变名词的变化规则_动词变名词的变化规则例子
- 蛋白质非标记定量技术lable free
- 无线局域网和蜂窝移动网络_为什么 iPhone 的数据流量叫做「蜂窝移动网络」?...
- spanning tree增强
- Python骚操作 | 还原已撤回的微信消息
- 中午午睡失眠,写了一些备忘
- GBASE 8C——SQL参考 5 全文检索
- 异步FIFO设计原理及Verliog源代码
- 《我是一只IT小小鸟》 读书笔记
- Softing新版HART多路复用器软件支持西门子控制器
热门文章
- 使用Fluent NHibernate和AngularJS的Master Chef(第2部分)ASP.NET Core MVC
- 实时 Git,在版本控制之前控制源码
- 要来了!国内安卓统一推送标准将于3月开启测试
- python爬取内容剔除nbsp_python 爬虫爬取内容时, \xa0 、 \u3000 的含义与处理方法...
- 广度优先搜索生成树怎么画_LeetCode0938: 二叉搜索树的范围和
- druid连接池以及数据源了解
- win8系统如何开服务器,Win8.1怎么打开IIS服务器?Win8.1专业版64位系统中打开IIS服务器的方法...
- php临时文件删除,php删除临时文件的代码示例
- java二叉树深度优先遍历会考不递归的吗_树的广度优先遍历和深度优先遍历(递归非递归、Java实现)...
- linux docker run怎么退出,详解如何进入、退出docker容器的方法