【1】常用XML操作
//所需要添加的命名空间
using System.Xml;
//初始化一个xml实例
XmlDocument xml=new XmlDocument();
//导入指定xml文件
xml.Load(“xml文件路径path”);
//指定一个节点
XmlNode root=xml.SelectSingleNode("节点名称");
//获取节点下所有直接子节点
XmlNodeList childlist=root.ChildNodes;
//判断该节点下是否有子节点
root.HasChildNodes;
//获取同名同级节点集合
XmlNodeList nodelist=xml.SelectNodes("节点名称");
//生成一个新节点
XmlElement node=xml.CreateElement("节点名称");
//将节点加到指定节点下,作为其子节点
root.AppendChild(node);
//将节点加到指定节点下某个子节点前
root.InsertBefore(node,root.ChildeNodes[i]);
//为指定节点的新建属性并赋值
node.SetAttribute("id","11111");
//为指定节点添加子节点
root.AppendChild(node);
//获取指定节点的指定属性值
string id=node.Attributes["id"].Value;
//获取指定节点中的文本
string content=node.InnerText;
//保存XML文件
xml.Save(“xml文件存储的路径path”);
【2】 #region AddXmlInformation:往XML中添加信息的方法
private static void AddXmlInformation(string xmlFilePath, IpAddressModel IpMod)
{
try
{
XmlDocument myXmlDoc = new XmlDocument();
//获取XML文件
myXmlDoc.Load(xmlFilePath);
//获取到指定的节点名称(根节点)
XmlNode root = myXmlDoc.SelectSingleNode("Ipaddress");
//为此节点添加新行(子节点)
XmlElement node = myXmlDoc.CreateElement("IpAddressInfor");
//给新增的节点添加属性
node.SetAttribute("IP", IpMod.IP);
node.SetAttribute("Port", IpMod.Port);
node.SetAttribute("RemoteChannel", IpMod.RemoteChannel);
node.SetAttribute("UserName", IpMod.UserName);
node.SetAttribute("UserPassd", IpMod.PassWord);
node.SetAttribute("Address", IpMod.Address);
//将节点添加到根节点下面
root.AppendChild(node);
//保存更改
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
【3】#region ReadXmlData :读取XML中信息的方法
private List<IpAddressModel> ReadXmlData()
{
List<IpAddressModel> IpAddressModelList=new List<IpAddressModel>();
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("data/VideoIP.xml")); //从指定位置加载XML文件
XmlElement xmlroot = doc.DocumentElement; //获取更节点
foreach (XmlNode node in xmlroot) //循环获取每个节点的数据
{
IpAddressModel IpInfor = new IpAddressModel();
IpInfor.IP = node.Attributes["IP"].Value;
IpInfor.Address = node.Attributes["Address"].Value;
IpInfor.PassWord = node.Attributes["UserPassd"].Value;
IpInfor.UserName = node.Attributes["UserName"].Value;
IpInfor.Port = node.Attributes["Port"].Value;
IpInfor.RemoteChannel = node.Attributes["RemoteChannel"].Value;
IpAddressModelList.Add(IpInfor);
}
return IpAddressModelList;
}
【修改】
#region EditXml:修改
/// <summary>
/// EditXml:修改
/// </summary>
/// <param name="xmlPath">XML的文件路径</param>
/// <param name="ip">IP地址</param>
/// <param name="IpModel">监控信息Model</param>
private void EditXml(string xmlPath,string ip,string address, IpAddressModel IpModel)
{
try
{
XmlDocument xml = new XmlDocument();
xml.Load(xmlPath);
//查找根节点
XmlNode node = xml.SelectSingleNode("Ipaddress");
//获得其子节点
XmlNodeList nodelist = node.ChildNodes;
foreach (XmlNode xmlnodechild in nodelist)
{
XmlElement xe = (XmlElement)xmlnodechild;//将节点转换一下类型
//根据Ip和地址来判断需要修改哪个监控
if (xe.GetAttribute("IP") == ip && xe.GetAttribute("Address")==address)
{
xe.SetAttribute("IP", IpModel.IP);
xe.SetAttribute("Address",IpModel.Address);
xe.SetAttribute("Port", IpModel.Port);
}
}
//保存更改
xml.Save(xmlPath);
}
catch (Exception ee)
{
Response.Write("<script>alert('"+ee.Message.ToString()+"')</script>");
throw;
}
}
#endregion
【4】 DeleteXml:删除
#region DeleteXml:删除
/// <summary>
/// DeleteXml:删除
/// </summary>
/// <param name="xmlPath">XML文件路径</param>
/// <param name="EquipmentId">设备ID</param>
/// <returns></returns>
private string DeleteXml(string xmlPath, string EquipmentId)
{
string result = "";
try
{
XmlDocument xml = new XmlDocument();
xml.Load(xmlPath);
//查找根节点
XmlNode node = xml.SelectSingleNode("Solider");
//获得其子节点
XmlNodeList nodelist = node.ChildNodes;
foreach (XmlNode xmlnodechild in nodelist)
{
XmlElement xe = (XmlElement)xmlnodechild;//将节点转换一下类型
//根据Ip和地址来判断需要修改哪个监控
if (xe.GetAttribute("EquipmentId") == EquipmentId)
{
node.RemoveChild(xe);
}
}
//保存更改
xml.Save(xmlPath);
result = "1";
}
catch (Exception ee)
{
result = ee.Message;
throw;
}
return result;
}
如果XML文件没有value值的情况 用HashTable读取
类似文件:
<?xml version="1.0" encoding="utf-8" ?>
<Organizations>
<Organization>
<ID>1111</ID>
<DomainName>aa</DomainName>
</Organization>
<Organization>
<ID>2222</ID>
<DomainName>bb</DomainName>
</Organization>
</Organizations>
读取方法:
Hashtable ht = new Hashtable();
string orgCodePath = Server.MapPath(ConfigurationSettings.AppSettings["orgCodePath"]);
//string orgCodePath = Server.MapPath("../../template/home/orgCode.xml");
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(orgCodePath);
//获取节点列表
XmlNodeList topM = xmldoc.SelectNodes("//Organization");
foreach (XmlElement element in topM)
{
string id = element.GetElementsByTagName("ID")[0].InnerText;
string domainName = element.GetElementsByTagName("DomainName")[0].InnerText;
ht.Add(id, domainName);
}