.Net操作XML文件常用方法

【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);  
            }  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码写到35岁

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值