/**/
/*
* Created by SharpDevelop.
* User: XiaoCai
* Date: 2006-9-25
* Time: 10:05
*
* If you have anything,Please contact us;
*/
using System;
using System.Xml;
namespace BH.XmlClass
... {
基本的XML数据对象类#region 基本的XML数据对象类
/**//// <summary>
/// 基本的XML数据对象,只包括三级结构,其中根结点可以包括属性
/// </summary>
public class XmlItem
...{
//存放孙结点名称的数组,调用时传入参数初始化孙结点
public string[] GrandsonNode;
//存放孙结点值的数组
public string[] GrandsonNodeValue;
//public string Name; //子结点
//public string Url; //子结点
//public string Img; //子结点
//public string Address; //子结点
public string XmlPath; //要操作的xml文件路径(绝对路径或相对路径都可以)
public string RootNode; //根结点名称
public bool IsRootAttribute; //根结点是否有属性
//根结点属性名称
public string[] RootAttribute;
//根结点属性值
public string[] RootAttributeValue;
//public string Date; //根结点属性
//public string Author; //根结点属性
//public string Description; //根结点属性
public string ChildNode; //根结点下的子结点名称
/**//// <summary>
/// 无参构造函数
/// </summary>
public XmlItem()...{
//TODO:无参构造函数
}
/**//// <summary>
/// 初始化XML路径、根结点名称以及子结点名称的构造函数
/// </summary>
/// <param name="vXmlPath"></param>
/// <param name="vRootNode"></param>
/// <param name="vChildNode"></param>
public XmlItem(string vXmlPath,string vRootNode,string vChildNode,bool vIsRootAttribute)
...{
XmlPath = vXmlPath;
RootNode = vRootNode;
ChildNode = vChildNode;
IsRootAttribute = vIsRootAttribute;
}
/**//// <summary>
/// 初始化孙结点名称的构造函数
/// </summary>
/// <param name="vGrandsonNode">孙结点名称数组</param></param>
public XmlItem(string[] vGrandsonNode)...{
GrandsonNode = new string[vGrandsonNode.Length];
for(int i=0;i < GrandsonNode.Length;i++)...{
GrandsonNode[i] = vGrandsonNode[i];
}
}
/**//// <summary>
/// 初始化根结点属性名称的构造函数
/// </summary>
/// <param name="vRootAttribute">属性名称数组</param>
public XmlItem(string[] vRootAttribute)...{
RootAttribute = new string[vRootAttribute.Length];
for(int i=0;i < RootAttribute.Length;i++)...{
RootAttribute[i] = vRootAttribute[i]
}
}
}
#endregion
/**//// <summary>
/// 数据操作类,只能对简单的xml数据表结构操作
/// XML文件原型:1、只有一个根结点。2、根结点可以带属性。
/// 3、子结点标识必须相同。4、子结点和孙结点都不带属性
/// </summary>
public class XmlOprator
...{
/**//// <summary>
/// 添加一个新的XML结点
/// </summary>
/// <param name="vXmlItem">结点信息对象</param>
public void AddXml(XmlItem vXmlItem)
...{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(vXmlItem.XmlPath);
//
//TODO:查找根结点
//
XmlNode root = XmlDoc.SelectSingleNode(vXmlItem.RootNode);
if(vXmlItem.IsRootAttribute)...{
//添加根结点属性
XmlElement xe = (XmlElement)root;
for(int i=0;i < vXmlItem.RootAttribute.Length;i++)...{
xe.SetAttribute(vXmlItem.RootAttribute[i], vXmlItem.RootAttributeValue[i]);
}
//xe.SetAttribute("Date",vXmlItem.Date);
//xe.SetAttribute("Author",vXmlItem.Author);
//xe.SetAttribute("Description",vXmlItem.Description);
}
else
...{
//添加根结点的子结点
XmlElement xe = XmlDoc.CreateElement(vXmlItem.ChildNode);
for(int i=0;i < vXmlItem.GrandsonNode.Length;i++)...{
XmlElement xeSub1 = XmlDoc.CreateElement(vXmlItem.GrandsonNode[i]);
xeSub1.InnerText = vXmlItem.GrandsonNodeValue[i];
xe.AppendChild(xeSub1);
}
/**//*//xe的第一个子结点
XmlElement xeSub1 = XmlDoc.CreateElement("Name");
xeSub1.InnerText = vXmlItem.Name;
xe.AppendChild(xeSub1);
//xe的第二个子结点
XmlElement xeSub2 = XmlDoc.CreateElement("Url");
xeSub2.InnerText = vXmlItem.Url;
xe.AppendChild(xeSub2);
//xe的第三个子结点
XmlElement xeSub3 = XmlDoc.CreateElement("Img");
xeSub3.InnerText = vXmlItem.Img;
xe.AppendChild(xeSub3);
//xe的第四个子结点
XmlElement xeSub4 = XmlDoc.CreateElement("Address");
xeSub4.InnerText = vXmlItem.Address;
xe.AppendChild(xeSub4);*/
root.AppendChild(xe);
XmlDoc.Save(vXmlItem.XmlPath);
}
}
/**//// <summary>
/// 编辑结点信息
/// </summary>
/// <param name="vXmlItem">要修改的结点信息对象</param>
/// <param name="Index">孙结点的索引</param>
/// <param name="WhereStr">和索引对应的条件</param>
public void EditXml(XmlItem vXmlItem,int Index,string WhereStr)
...{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(vXmlItem.XmlPath);
XmlNodeList xnl = XmlDoc.SelectSingleNode(vXmlItem.RootNode).ChildNodes;
foreach(XmlNode xn in xnl)...{
XmlElement xe = (XmlElement)xn;
if(xe.ChildNodes[Index].InnerText==WhereStr)...{
for(int i=0;i < vXmlItem.GrandsonNode.Length;i++)...{
xe.ChildNodes[i].InnerText = vXmlItem.GrandsonNodeValue[i];
}
/**//*xe.ChildNodes[0].InnerText = vXmlItem.Name;
xe.ChildNodes[1].InnerText = vXmlItem.Url;
xe.ChildNodes[2].InnerText = vXmlItem.Img;
xe.ChildNodes[3].InnerText = vXmlItem.Address;*/
}
}
XmlDoc.Save(vXmlItem.XmlPath);
}
/**//// <summary>
/// 删除XML指定结点,孙结点的索引作为条件
/// </summary>
/// <param name="vXmlItem">结点信息对象</param>
/// <param name="Index">孙结点的索引</param>
/// <param name="WhereStr">和索引对应的条件</param>
public void DeleteXml(XmlItem vXmlItem,int Index,string WhereStr)
...{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(vXmlItem.XmlPath);
XmlNodeList xnl = XmlDoc.SelectSingleNode(vXmlItem.RootNode).ChildNodes;
//按照孙结点的索引循环查找指定结点删除
foreach(XmlNode xn in xnl)...{
XmlElement xe = (XmlElement)xn;
if(xe.ChildNodes[Index].InnerText==WhereStr)...{
XmlDoc.SelectSingleNode(vXmlItem.RootNode).RemoveChild(xe);
}
}
XmlDoc.Save(vXmlItem.XmlPath);
}
public void DeleteXml(XmlItem vXI,string vGrandsonNode,string WhereStr)...{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(vXI.XmlPath);
XmlNodeList xnl = XmlDoc.SelectSingleNode(vXI.RootNode).ChildNodes;
//按照孙结点的名称循环查找指定结点删除
foreach(XmlNode xn in xnl)...{
XmlElement xe = (XmlElement)xn;
if(xe.GetElementsByTagName(vGrandsonNode)[0].InnerText==WhereStr)...{
XmlDoc.SelectSingleNode(vXI.RootNode).RemoveChild(xe);
}
}
XmlDoc.Save(vXI.XmlPath);
}
}
}
* Created by SharpDevelop.
* User: XiaoCai
* Date: 2006-9-25
* Time: 10:05
*
* If you have anything,Please contact us;
*/
using System;
using System.Xml;
namespace BH.XmlClass
... {
基本的XML数据对象类#region 基本的XML数据对象类
/**//// <summary>
/// 基本的XML数据对象,只包括三级结构,其中根结点可以包括属性
/// </summary>
public class XmlItem
...{
//存放孙结点名称的数组,调用时传入参数初始化孙结点
public string[] GrandsonNode;
//存放孙结点值的数组
public string[] GrandsonNodeValue;
//public string Name; //子结点
//public string Url; //子结点
//public string Img; //子结点
//public string Address; //子结点
public string XmlPath; //要操作的xml文件路径(绝对路径或相对路径都可以)
public string RootNode; //根结点名称
public bool IsRootAttribute; //根结点是否有属性
//根结点属性名称
public string[] RootAttribute;
//根结点属性值
public string[] RootAttributeValue;
//public string Date; //根结点属性
//public string Author; //根结点属性
//public string Description; //根结点属性
public string ChildNode; //根结点下的子结点名称
/**//// <summary>
/// 无参构造函数
/// </summary>
public XmlItem()...{
//TODO:无参构造函数
}
/**//// <summary>
/// 初始化XML路径、根结点名称以及子结点名称的构造函数
/// </summary>
/// <param name="vXmlPath"></param>
/// <param name="vRootNode"></param>
/// <param name="vChildNode"></param>
public XmlItem(string vXmlPath,string vRootNode,string vChildNode,bool vIsRootAttribute)
...{
XmlPath = vXmlPath;
RootNode = vRootNode;
ChildNode = vChildNode;
IsRootAttribute = vIsRootAttribute;
}
/**//// <summary>
/// 初始化孙结点名称的构造函数
/// </summary>
/// <param name="vGrandsonNode">孙结点名称数组</param></param>
public XmlItem(string[] vGrandsonNode)...{
GrandsonNode = new string[vGrandsonNode.Length];
for(int i=0;i < GrandsonNode.Length;i++)...{
GrandsonNode[i] = vGrandsonNode[i];
}
}
/**//// <summary>
/// 初始化根结点属性名称的构造函数
/// </summary>
/// <param name="vRootAttribute">属性名称数组</param>
public XmlItem(string[] vRootAttribute)...{
RootAttribute = new string[vRootAttribute.Length];
for(int i=0;i < RootAttribute.Length;i++)...{
RootAttribute[i] = vRootAttribute[i]
}
}
}
#endregion
/**//// <summary>
/// 数据操作类,只能对简单的xml数据表结构操作
/// XML文件原型:1、只有一个根结点。2、根结点可以带属性。
/// 3、子结点标识必须相同。4、子结点和孙结点都不带属性
/// </summary>
public class XmlOprator
...{
/**//// <summary>
/// 添加一个新的XML结点
/// </summary>
/// <param name="vXmlItem">结点信息对象</param>
public void AddXml(XmlItem vXmlItem)
...{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(vXmlItem.XmlPath);
//
//TODO:查找根结点
//
XmlNode root = XmlDoc.SelectSingleNode(vXmlItem.RootNode);
if(vXmlItem.IsRootAttribute)...{
//添加根结点属性
XmlElement xe = (XmlElement)root;
for(int i=0;i < vXmlItem.RootAttribute.Length;i++)...{
xe.SetAttribute(vXmlItem.RootAttribute[i], vXmlItem.RootAttributeValue[i]);
}
//xe.SetAttribute("Date",vXmlItem.Date);
//xe.SetAttribute("Author",vXmlItem.Author);
//xe.SetAttribute("Description",vXmlItem.Description);
}
else
...{
//添加根结点的子结点
XmlElement xe = XmlDoc.CreateElement(vXmlItem.ChildNode);
for(int i=0;i < vXmlItem.GrandsonNode.Length;i++)...{
XmlElement xeSub1 = XmlDoc.CreateElement(vXmlItem.GrandsonNode[i]);
xeSub1.InnerText = vXmlItem.GrandsonNodeValue[i];
xe.AppendChild(xeSub1);
}
/**//*//xe的第一个子结点
XmlElement xeSub1 = XmlDoc.CreateElement("Name");
xeSub1.InnerText = vXmlItem.Name;
xe.AppendChild(xeSub1);
//xe的第二个子结点
XmlElement xeSub2 = XmlDoc.CreateElement("Url");
xeSub2.InnerText = vXmlItem.Url;
xe.AppendChild(xeSub2);
//xe的第三个子结点
XmlElement xeSub3 = XmlDoc.CreateElement("Img");
xeSub3.InnerText = vXmlItem.Img;
xe.AppendChild(xeSub3);
//xe的第四个子结点
XmlElement xeSub4 = XmlDoc.CreateElement("Address");
xeSub4.InnerText = vXmlItem.Address;
xe.AppendChild(xeSub4);*/
root.AppendChild(xe);
XmlDoc.Save(vXmlItem.XmlPath);
}
}
/**//// <summary>
/// 编辑结点信息
/// </summary>
/// <param name="vXmlItem">要修改的结点信息对象</param>
/// <param name="Index">孙结点的索引</param>
/// <param name="WhereStr">和索引对应的条件</param>
public void EditXml(XmlItem vXmlItem,int Index,string WhereStr)
...{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(vXmlItem.XmlPath);
XmlNodeList xnl = XmlDoc.SelectSingleNode(vXmlItem.RootNode).ChildNodes;
foreach(XmlNode xn in xnl)...{
XmlElement xe = (XmlElement)xn;
if(xe.ChildNodes[Index].InnerText==WhereStr)...{
for(int i=0;i < vXmlItem.GrandsonNode.Length;i++)...{
xe.ChildNodes[i].InnerText = vXmlItem.GrandsonNodeValue[i];
}
/**//*xe.ChildNodes[0].InnerText = vXmlItem.Name;
xe.ChildNodes[1].InnerText = vXmlItem.Url;
xe.ChildNodes[2].InnerText = vXmlItem.Img;
xe.ChildNodes[3].InnerText = vXmlItem.Address;*/
}
}
XmlDoc.Save(vXmlItem.XmlPath);
}
/**//// <summary>
/// 删除XML指定结点,孙结点的索引作为条件
/// </summary>
/// <param name="vXmlItem">结点信息对象</param>
/// <param name="Index">孙结点的索引</param>
/// <param name="WhereStr">和索引对应的条件</param>
public void DeleteXml(XmlItem vXmlItem,int Index,string WhereStr)
...{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(vXmlItem.XmlPath);
XmlNodeList xnl = XmlDoc.SelectSingleNode(vXmlItem.RootNode).ChildNodes;
//按照孙结点的索引循环查找指定结点删除
foreach(XmlNode xn in xnl)...{
XmlElement xe = (XmlElement)xn;
if(xe.ChildNodes[Index].InnerText==WhereStr)...{
XmlDoc.SelectSingleNode(vXmlItem.RootNode).RemoveChild(xe);
}
}
XmlDoc.Save(vXmlItem.XmlPath);
}
public void DeleteXml(XmlItem vXI,string vGrandsonNode,string WhereStr)...{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(vXI.XmlPath);
XmlNodeList xnl = XmlDoc.SelectSingleNode(vXI.RootNode).ChildNodes;
//按照孙结点的名称循环查找指定结点删除
foreach(XmlNode xn in xnl)...{
XmlElement xe = (XmlElement)xn;
if(xe.GetElementsByTagName(vGrandsonNode)[0].InnerText==WhereStr)...{
XmlDoc.SelectSingleNode(vXI.RootNode).RemoveChild(xe);
}
}
XmlDoc.Save(vXI.XmlPath);
}
}
}