XML新增、修改、选择
2014-02-20 09:51
218 查看
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 : "0"; } } catch (Exception ex) { Logger.WriteLogger(ex, ConstValues.MainLogFileName); } return "0"; } public static string ReadKonamiTicket(string ticketNumber, TicketStatus ticketstatus) { try { lock (ReadWriteLock) { XElement element = (from elem in Doc.Elements().Descendants() where elem.Value.Substring(2,16) == ticketNumber && elem.Attribute("status").Value == ticketstatus.ToString() select elem).FirstOrDefault(); return element != null ? element.Attribute("amount").Value : "0"; } } catch (Exception ex) { Logger.WriteLogger(ex, ConstValues.MainLogFileName); } return "0"; } 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 : "0"; } } } catch (Exception ex) { Logger.WriteLogger(ex, ConstValues.MainLogFileName); } return "0"; } 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(2,16) == 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) + 1).ToString(); //if number.lenght<18 fill with "0" at start while (number.Length < 18) { number = "0" + number; } //get 18 character in case number.lengh>18 string ticketNumber = number.Substring(number.Length - 18, 18); //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 "000000000000000000"; } } public static bool Reset() { try { lock (ReadWriteLock) { _doc = XDocument.Load(XmlFileName); } } catch (Exception ex) { Logger.WriteLogger(ex, ConstValues.MainLogFileName); return false; } return true; } } }
相关文章推荐
- Asp.Net XML操作基类(修改,删除,新增,创建)
- Asp.Net XML操作基类(修改,删除,新增,创建)
- 【C#】C#操作XML方法:新增、修改和删除节点与属性
- Asp.Net XML操作基类(修改,删除,新增,创建)
- Asp.Net XML操作基类(修改,删除,新增,创建)
- 我的XMLHelper----C# XML操作基类(修改,删除,新增,创建)
- SQL存储过程-新增和修改,参数Xml数据类型
- C# 关于XML遍历新增节点,修改属性小例
- Asp.Net XML操作基类(修改,删除,新增,创建)
- C#C# XMLXML 修改修改 新增新增 删除删除 插入插入
- Asp.Net XML操作基类(修改,删除,新增,创建)
- Asp.Net+XML操作基类(修改,删除,新增,创建)第1/2页
- 【自用门户】如何修改jeecms自定义新增字段为日期时候的,内容页面选择日期是日期,改成时分秒
- Asp.Net XML操作基类(修改,删除,新增,创建)
- js操作select控件大全(新增、修改、删除、选择)
- Asp.Net XML操作基类(修改,删除,新增,创建)
- Asp.Net XML操作基类(修改,删除,新增,创建)
- Asp.Net XML操作基类(修改,删除,新增,创建)
- Asp.Net XML操作基类(修改,删除,新增,创建)
- C#操作XML方法:新增、修改和删除节点与属性