《移动端签到》——用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

相关文章

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W