《移动端签到》——用XML灵活配置变量

2024-08-27 20:48

本文主要是介绍《移动端签到》——用XML灵活配置变量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  公司的考勤功能这就要上线,在签到这个模块中,由于签到功能只能在公司内部使用,也就是在一个固定的范围内使用,没有像钉钉那样有外勤签到,随着版本的升级,有一个这样的需求,每个公司的地理位置不同(经纬度就不同),公司的上下班时间不同,而且这些东西有可能是变化的,这就导致了统计签到记录的信息不同。

  以前这些信息时写死的,不容易变更,本来我想在数据库中设计一张表来维护这些变量,当然,只有管理员才可以维护,但是为了节省访问时间,我就将这一些信息写在了XML里面,这样一来,在某些情况下程序读XML的速度肯定比读取数据库的速度要快,但是要是维护数据,只能修改XML了,不能再手机APP页面上直接操纵了,嗨,鱼和熊掌不可兼得啊!

  下面展示一下我的代码

  1、 XML存放数据代码

<?xml version="1.0" encoding="utf-8" ?>
<workMessage><Field>100</Field><item><id>beijing</id><ontime>08:30:00</ontime><offtime>17:30:00</offtime><lng>116.605454512445</lng><lat>31.4554521245455</lat></item><item><id>xian</id><ontime>09:00:00</ontime><offtime>18:00:00</offtime><lng>128.5454212545458</lng><lat>64.787445245457841</lat></item>
</workMessage><span style="font-family:SimSun;font-size:18px;">     </span>

  2、 实体类

public class WorkMessages{private string id;public string Id{get { return id; }set { id = value; }}private string ontime;public string OnTime{get { return ontime; }set { ontime = value; }}private string offtime;public string OffTime{get { return offtime; }set { offtime = value; }}private double lat;public double Lat{get { return lat; }set { lat = value; }}private double lng;public double Lng{get { return lng; }set { lng = value; }}public WorkMessages(){}public WorkMessages(string id, string ontime, string offtime,double lat,double lng){this.Id = id;this.OnTime = ontime;this.OffTime = offtime;this.Lat = lat;this.Lng = lng;}

  3、 读取XML中的信息

public List<WorkMessages> QueryWorkMessages(){List<WorkMessages> list = new List<WorkMessages>();XmlDocument xml = new XmlDocument();xml = XmlManager(HttpContext.Current.Server.MapPath("../XmlConfig/Punch.xml"));string id = "";string ontime = "";string offtime = "";double lat = 0.00;double lng = 0.00;WorkMessages info = null;//*******下面开始循环读取xml文件信息********/foreach (XmlNode node in xml.ChildNodes){if (node.Name == "workMessage"){foreach (XmlNode node1 in node.ChildNodes){if (node1.Name == "item"){foreach (XmlNode node2 in node1.ChildNodes){switch (node2.Name){case "id":id = node2.InnerText;break;case "ontime":ontime = node2.InnerText;break;case "offtime":offtime = node2.InnerText;break;case "lat":lat = Convert.ToDouble(node2.InnerText);break;default:lng = Convert.ToDouble(node2.InnerText);break;}}info = new WorkMessages(id, ontime, offtime, lat, lng);//将信息保存至集合list.Add(info);}}}}return list;}

  4、 根据路径加载XML
 public XmlDocument XmlManager(string strUrlPath){XmlDocument xmlDocument = new XmlDocument();if (!File.Exists(strUrlPath)){throw new Exception("指定的文件路径错误 请重新指定");}try{xmlDocument.Load(strUrlPath);}catch{throw new Exception("加载XML文档时发生错误");}return xmlDocument;}

  小结

  用XML代替数据库适合存储比较轻量级的数据,这里我用XML代替数据库的好处是操作简单,访问速度快,缺点是维护困难,需要打开代码往XML中手动添加数据。提醒一下,根据路径读取XML时,XML的路径最好写成相对路径,别写成绝对路径,比如说路径为C:\pagage\punch.xml,如果写成这样,当把程序发布到服务器上的时候程序再读xml有可能就报错了。

这篇关于《移动端签到》——用XML灵活配置变量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112743

相关文章

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

Python变量与数据类型全解析(最新整理)

《Python变量与数据类型全解析(最新整理)》文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析... 目录1、变量变量命名规范python数据类型1、基本数据类型数值类型(Number):布尔类型(bo

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的