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

相关文章

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

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

Python xmltodict实现简化XML数据处理

《Pythonxmltodict实现简化XML数据处理》Python社区为提供了xmltodict库,它专为简化XML与Python数据结构的转换而设计,本文主要来为大家介绍一下如何使用xmltod... 目录一、引言二、XMLtodict介绍设计理念适用场景三、功能参数与属性1、parse函数2、unpa

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法