首页 > 其他 > 详细

XML新增、修改、选择

时间:2014-02-20 18:01:20      阅读:334      评论:0      收藏:0      [点我收藏+]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
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 object _readWriteLock=new object();

private static string _xmlFileName = "Data/ValidTickets.xml";

public static string ReadTicket(string ticketNumber,TicketStatus ticketstatus)
{
try
{
lock (_readWriteLock)
{
var doc = XDocument.Load(_xmlFileName);
var 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 : null;
}
}
catch (Exception ex)
{
Logger.WriteLogger(ex,ConstValues.MainLogFileName);
}
return null;
}

public static string ReadTicket(string ticketNumber, string attribute)
{
try
{
lock (_readWriteLock)
{
var doc = XDocument.Load(_xmlFileName);
var element = (from elem in doc.Elements().Descendants() where elem.Value == ticketNumber select elem).FirstOrDefault();
if (attribute=="status")
{
return element != null ? element.Attribute("status").Value : null;
}
else if(attribute=="amount")
{
return element != null ? element.Attribute("amount").Value : null;
}
}
}
catch (Exception ex)
{
Logger.WriteLogger(ex, ConstValues.MainLogFileName);
}
return null;
}

public static bool WriteTicket(string ticketNumber, TicketStatus oldStatus, TicketStatus newStatus)
{
try
{
lock (_readWriteLock)
{
var doc = XDocument.Load(_xmlFileName);
var 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();
doc.Save(_xmlFileName);
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)
{
var xDoc = XDocument.Load(_xmlFileName);
var lastTiket = xDoc.Elements().Descendants().Last();
var 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
var 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);
xDoc.Root.Add(newNode);
xDoc.Save(_xmlFileName);

return ticketNumber;
}
}
catch (Exception ex)
{
Logger.WriteLogger(ex, ConstValues.MainLogFileName);
return "000000000000000000";
}
}
}
}

XML新增、修改、选择

原文:http://www.cnblogs.com/cw_volcano/p/3557014.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!