由于之前没有操作过xml文件,尤其是在窗体中操作xml,脑子一直转不动,而且很抵制去做这个功能,终于还是突破了自己通过查询资料完成了这个功能,在此记录一下自己的成果。
功能说明:程序中存在的xml文件,然后通过选择的日历中的某一天去匹配xml文件中是否存在这一天,如果存在则删除xml中的数据,如果不存在添加一条数据。
代码说明:
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
var selectTime = monthCalendar1.SelectionStart.ToString("yyyy-MM-dd");//获取选中的日期
var weburl = Application.StartupPath;//获取文件路径
var xmlName = "NotWorkDay.xml";//xml文件名称
var filefullName = weburl + "\\" + xmlName;//组装的路径
XmlDocument xmldoc = new XmlDocument();
ColorDialog fontcolor = new ColorDialog();
//xmldoc.Load(filefullName);
List<string> retList = new List<string>();
var t = 0;//是否存在数据的标识
if (System.IO.File.Exists(filefullName))
{
//已经存在该文件,判断该文件是否存在日期,如果存在则修改不存在则创建
xmldoc.Load(filefullName);
XmlNodeList xnl = xmldoc.GetElementsByTagName("非工作日");
foreach (XmlNode xxNode in xnl)
{
//retList.Add(xxNode.Attributes["name"].Value);
if (selectTime == xxNode.Attributes["name"].Value)
{
t++;
var root = xmldoc.DocumentElement.SelectSingleNode("日期"); //取到根结点
root.RemoveChild(xxNode);
xmldoc.Save(filefullName);
break;
}
}
if (t == 0)
{//如果xml中没有该数据,则插入
XmlElement node = (XmlElement) xmldoc.SelectSingleNode("非工作日设置/日期/非工作日");
node.SetAttribute("name", selectTime);
node.SetAttribute("id", selectTime);
xmldoc.Save(filefullName);
richTextBox1.AppendText(selectTime + "非工作日添加成功");
}
else
{
richTextBox1.AppendText(selectTime+"设置工作日成功");
}
}
}
逻辑上可能还不够简单,欢迎大家指正,谢谢。