XML新增、修改、选择
using System;
using System.Linq;
using System.Xml.Linq;
using DFS.Kiosk.Provider.Simulator.Common.Utilities;
using DFS.Kiosk.Provider.Simulators.Utilities; namespace DFS.Kiosk.Provider.Simulator.Common.Data
{
public static class DataAccessor
{
private static readonly object ReadWriteLock = new object(); private static XDocument _doc; private const string XmlFileName = "Data/ValidTickets.xml"; private static XDocument Doc
{
get { return _doc ?? (_doc = XDocument.Load(XmlFileName)); }
} public static string ReadTicket(string ticketNumber, TicketStatus ticketstatus)
{
try
{
lock (ReadWriteLock)
{
XElement element = (from elem in Doc.Elements().Descendants()
where elem.Value == ticketNumber && elem.Attribute("status").Value == ticketstatus.ToString()
select elem).FirstOrDefault();
return element != null ? element.Attribute("amount").Value : "";
}
}
catch (Exception ex)
{
Logger.WriteLogger(ex, ConstValues.MainLogFileName);
}
return "";
} public static string ReadKonamiTicket(string ticketNumber, TicketStatus ticketstatus)
{
try
{
lock (ReadWriteLock)
{
XElement element = (from elem in Doc.Elements().Descendants()
where elem.Value.Substring(,) == ticketNumber && elem.Attribute("status").Value == ticketstatus.ToString()
select elem).FirstOrDefault();
return element != null ? element.Attribute("amount").Value : "";
}
}
catch (Exception ex)
{
Logger.WriteLogger(ex, ConstValues.MainLogFileName);
}
return "";
} public static string ReadTicket(string ticketNumber, string attribute)
{
try
{
lock (ReadWriteLock)
{
XElement element =
(from elem in Doc.Elements().Descendants() where elem.Value == ticketNumber select elem)
.FirstOrDefault();
if (attribute == "status")
{
return element != null ? element.Attribute("status").Value : TicketStatus.NotFound.ToString();
}
if (attribute == "amount")
{
return element != null ? element.Attribute("amount").Value : "";
}
}
}
catch (Exception ex)
{
Logger.WriteLogger(ex, ConstValues.MainLogFileName);
}
return "";
} public static bool WriteTicket(string ticketNumber, TicketStatus oldStatus, TicketStatus newStatus)
{
try
{
lock (ReadWriteLock)
{
XElement element = (from elem in Doc.Elements().Descendants()
where elem.Value == ticketNumber && elem.Attribute("status").Value == oldStatus.ToString()
select elem).FirstOrDefault();
if (element != null)
{
element.Attribute("status").Value = newStatus.ToString();
return true;
}
return false;
}
}
catch (Exception ex)
{
Logger.WriteLogger(ex, ConstValues.MainLogFileName);
return false;
}
} public static bool WriteKonamiTicket(string ticketNumber, TicketStatus oldStatus, TicketStatus newStatus)
{
try
{
lock (ReadWriteLock)
{
XElement element = (from elem in Doc.Elements().Descendants()
where elem.Value.Substring(,) == ticketNumber && elem.Attribute("status").Value == oldStatus.ToString()
select elem).FirstOrDefault();
if (element != null)
{
element.Attribute("status").Value = newStatus.ToString();
return true;
}
return false;
}
}
catch (Exception ex)
{
Logger.WriteLogger(ex, ConstValues.MainLogFileName);
return false;
}
} /// <summary>
/// Creates ticket, add xml node into ValidTickets.xml file
/// </summary>
/// <param name="amount">The amount.</param>
/// <returns></returns>
public static string CreateTicket(string amount)
{
try
{
lock (ReadWriteLock)
{
XElement lastTiket = Doc.Elements().Descendants().Last();
string number = (long.Parse(lastTiket.Value) + ).ToString(); //if number.lenght<18 fill with "0" at start
while (number.Length < )
{
number = "" + number;
}
//get 18 character in case number.lengh>18
string ticketNumber = number.Substring(number.Length - , ); //add new ticket to xdocoment
var newNode = new XElement("ValidVoucher",
new XAttribute("status", TicketStatus.pending),
new XAttribute("amount", amount));
newNode.SetValue(ticketNumber);
if (Doc.Root != null) Doc.Root.Add(newNode); return ticketNumber;
}
}
catch (Exception ex)
{
Logger.WriteLogger(ex, ConstValues.MainLogFileName);
return "";
}
} public static bool Reset()
{
try
{
lock (ReadWriteLock)
{
_doc = XDocument.Load(XmlFileName);
}
}
catch (Exception ex)
{
Logger.WriteLogger(ex, ConstValues.MainLogFileName);
return false;
}
return true;
}
}
}
XML新增、修改、选择的更多相关文章
- salesforce 零基础学习(六十九)当新增/修改一条记录以后发生了什么(适合初学者)
salesforce开发中,我们会对object进行很多的操作,比如对object设置字段的必填性唯一性等,设置validation rule实现一下相关的字段的逻辑校验,设置workflow实现某个 ...
- 如何使用编辑模板在ASPxGridView中进行新增修改(除去常规的gridviw模板编辑外)
aspgridview模板编辑效果图: //前端代码:(核心: <Templates><EditForm>.....中间可用栅格样式布局等(随意)...</Templat ...
- xml动态修改 dom4j修改
xml的动态修改需要传入的参数 xml的位置(tomcat中的发布位置).修改后的xml需要保存的位置(因为动态修改,所以建议和xml未修改前的位置相同).添加的节点的信息.或者修改的节点的信息 SA ...
- Java代码操作properties文件(读取,新增/修改,删除)
项目中需要用到操作properties文件中的数据,记录一下 package com.bonc.savepic.save; import java.io.FileNotFoundException; ...
- Java 操纵XML之修改XML文件
Java 操纵XML之修改XML文件 一.JAVA DOM PARSER DOM interfaces The DOM defines several Java interfaces. Here ar ...
- 修改选择排序 Exercise07_20
import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年12月 * 题目:修改选择排序 * */ public class Exercise07_2 ...
- Element-ui 下拉列表 全选 多选时 select全选 新增一个选择所有的选项
项目里经常会用到,在一个多选下拉框里新增一个选择所有的选项,例如: <!DOCTYPE html> <html lang="en"> <head> ...
- Oracle忘记用户名和密码以及管理员用户新增修改删除用户
Oracle忘记密码: 1.以管理员身份登录,打开dos窗口,输入 sqlplus / as sysdba 回车 2.查看当前用户和状态 select username, account_status ...
- .net操作xml文件(新增.修改,删除,读取) 转
今天有个需求需要操作xml节点.突然见遗忘了许多.上网看了些资料.才整出来.脑袋真不够用.在这里把我找到的资料共享一下.方便以后使用.本文属于网摘/ 1 一.简单介绍2 using System.Xm ...
随机推荐
- poj 3783 Balls 动态规划 100层楼投鸡蛋问题
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4098409.html 题目链接:poj 3783 Balls 动态规划 100层楼投鸡蛋问题 ...
- Jqery之select操作
jquery获取select选择的文本与值 获取select : 获取select 选中的 text : $("#ddlregtype").find("optio ...
- Jquery Offset, Document, Window 都是什么
From http://www.cnblogs.com/luhe/archive/2012/11/14/2769263.html JQuery Offset实验与应用 我们有时候需要实现这样一种功 ...
- this在JavaScript中的工作范围
this在JavaScript中的工作范围 在一个函数中,this的行为,取决于JavaScript函数的调用方式和定义方式,而不仅仅是看它如何被定义的. var fullname = 'Fu';va ...
- 004.CleanUp方法
定义: Delphi procedure CleanUp; 类型 可见性 所在源码 所在单元 父类 procedure protected System.RegularExpressionsCore. ...
- 原生js在IE7下 向dom添加节点的一个bug, (本例为添加hidden input)
需求是要用js向dom结构增加1个hidden用来存放要post到服务器的数据 var aspnetForm = document.getElementById("aspnetForm&qu ...
- Python 强大而易用的文件操作(转载)
在Python中可以很方便地做一些诸如浏览目录,创建文件夹,删除文件夹等等的操作. 对文件系统的访问大多通过os模块来实现,因为Python是多平台的,os模块只是前端,具体的实现还是由具体的系统来完 ...
- 安装saltstack
1.安装master 安装epel源 # cd /usr/local/src/ # wget http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-rel ...
- 学习hash_map从而了解如何写stl里面的hash函数和equal或者compare函数
---恢复内容开始--- 看到同事用unordered_map了所以找个帖子学习学习 http://blog.sina.com.cn/s/blog_4c98b9600100audq.html (一)为 ...
- 洛谷 P1541 乌龟棋
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...