XML增删改

Code
<?xml version="1.0" encoding="utf-8"?>
<Employeers>
<Employeer ID="DBT39435M">
    
<HireDate>1/1/1990 12:00:00 上午</HireDate>
    
<JobLvl>75</JobLvl>
    
<JobID>11</JobID>
    
<LastName>Tonini</LastName>
    
<FirstName>Daniel</FirstName>
</Employeer>
</Employeers>
以上是xml文件模板。 
   
/**//// <summary>
        
/// 写入xml文件
        
/// </summary>
        
/// <param name="fileName">完整文件名</param>
        private void WriteXml(string fileName)
        {
            DataTable dt 
= DataAccess.AjaxData.GetXmlData();
            XmlDocument xmldoc 
= new XmlDocument();
            
//创建文件头信息
            XmlDeclaration xmldec = xmldoc.CreateXmlDeclaration("1.0""utf-8"null);
            
//创建文件根节点
            XmlElement rootNode = xmldoc.CreateElement("Employeers");
            xmldoc.InsertBefore(xmldec, xmldoc.DocumentElement);
            xmldoc.AppendChild(rootNode);

            
//遍历数据表,
            foreach (DataRow dr in dt.Rows)
            {
                
//创建一条记录的父节点
                XmlElement parentNode = xmldoc.CreateElement("Employeer");
                parentNode.SetAttribute(
"ID", dr["emp_id"].ToString());
                xmldoc.DocumentElement.PrependChild(parentNode);
                
//为每个字段创建一个子节点
                XmlElement FName = xmldoc.CreateElement("FirstName");
                XmlElement LName 
= xmldoc.CreateElement("LastName");
                XmlElement JobID 
= xmldoc.CreateElement("JobID");
                XmlElement JobLvl 
= xmldoc.CreateElement("JobLvl");
                XmlElement HireDate 
= xmldoc.CreateElement("HireDate");
                
                
//创建子节点的文字描述
                XmlText fnametext = xmldoc.CreateTextNode(dr["fname"].ToString());
                XmlText lnametext 
= xmldoc.CreateTextNode(dr["lname"].ToString());
                XmlText jobidtext 
= xmldoc.CreateTextNode(dr["job_id"].ToString());
                XmlText joblvtextl 
= xmldoc.CreateTextNode(dr["job_lvl"].ToString());
                XmlText hiredatetext 
= xmldoc.CreateTextNode(dr["hire_date"].ToString());

                
//将文字描述加到子节点
                FName.AppendChild(fnametext);
                LName.AppendChild(lnametext);
                JobID.AppendChild(jobidtext);
                JobLvl.AppendChild(joblvtextl);
                HireDate.AppendChild(hiredatetext);

                
/**//*上面两段也可以通过这段来代替
                FName.InnerText = dr["fname"].ToString();
                LName.InnerText = dr["lname"].ToString();
                JobID.InnerText = dr["job_id"].ToString();
                JobLvl.InnerText = dr["job_lvl"].ToString();
                HireDate.InnerText = dr["hire_date"].ToString();
                
*/

                
//将子节点加到父节点
                parentNode.PrependChild(FName);
                parentNode.PrependChild(LName);
                parentNode.PrependChild(JobID);
                parentNode.PrependChild(JobLvl);
                parentNode.PrependChild(HireDate);

            }

            
//保存成xml文件
            xmldoc.Save(fileName);
        }

        
/**//// <summary>
        
/// 添加一个节点
        
/// </summary>
        
/// <param name="fileName"></param>
        public void AddNewNode(string fileName)
        {
            XmlDocument xmldoc 
= new XmlDocument();
            xmldoc.Load(fileName);

            
//找到根节点
            XmlNode rootNode = xmldoc.SelectSingleNode("Employeers");

            
//找到子节点
            XmlElement parentNode = xmldoc.CreateElement("Employeer");
            parentNode.SetAttribute(
"ID""EMPID");

            
//创建Employeer节点下的子节点
            XmlElement FName = xmldoc.CreateElement("FirstName");
            XmlElement LName 
= xmldoc.CreateElement("LastName");
            XmlElement JobID 
= xmldoc.CreateElement("JobID");
            XmlElement JobLvl 
= xmldoc.CreateElement("JobLvl");
            XmlElement HireDate 
= xmldoc.CreateElement("HireDate");

            FName.InnerText 
= "FName";
            LName.InnerText 
= "LName";
            JobID.InnerText 
= "JOBID";
            JobLvl.InnerText 
= "JOBLVL";
            HireDate.InnerText 
= "HIREDATE";

            parentNode.PrependChild(FName);
            parentNode.PrependChild(LName);
            parentNode.PrependChild(JobID);
            parentNode.PrependChild(JobLvl);
            parentNode.PrependChild(HireDate);

            
//将新创建的Employeer子节点点加入到根节点。
            rootNode.AppendChild(parentNode);

            xmldoc.Save(fileName);
        }

        
/**//// <summary>
        
/// 修改节点
        
/// </summary>
        
/// <param name="filename"></param>
        private void UpdateNode(string filename)
        {
            XmlDocument xmldoc 
= new XmlDocument();
            xmldoc.Load(filename);
            
//得到根节点的所有子节点
            XmlNodeList nodeList = xmldoc.SelectSingleNode("Employeers").ChildNodes;
            
foreach (XmlNode node in nodeList)
            {
                XmlElement xe 
= (XmlElement)node;//强制转换成XmlElement类型。
                if (xe.GetAttribute("ID"== "001")
                {
                    XmlNodeList xnodeList 
= xe.ChildNodes;
                    
foreach (XmlNode xnode in xnodeList)
                    {
                        XmlElement xex 
= (XmlElement)xnode;
                        
if (xex.Name == "FirstName")
                        {
                            xex.InnerText 
= xex.InnerText + "Test";
                        }
                    }
                }
            }
            xmldoc.Save(filename);
        }

        
/**//// <summary>
        
/// 删除节点
        
/// </summary>
        
/// <param name="filename"></param>
        public void DeleteNode(string filename)
        {
            XmlDocument xmldoc 
= new XmlDocument();
            xmldoc.Load(filename);
            XmlNodeList nodelist 
= xmldoc.SelectSingleNode("Employeers").ChildNodes;
            
foreach (XmlNode node in nodelist)
            {
                XmlElement xe 
= (XmlElement)node;//强制转换成XmlElement类型。
                
//xe.RemoveAttribute("ID");删除节点的ID属性。
                if (xe.GetAttribute("ID"== "001")
                {
                    XmlNodeList xnodeList 
= xe.ChildNodes;
                    
foreach (XmlNode xnode in xnodeList)
                    {
                        XmlElement xex 
= (XmlElement)xnode;
                        
if (xex.Name == "FirstName")
                        {
                            xe.RemoveChild(xex);
//删除一个节点
                        }
                    }
                }
            }
            xmldoc.Save(filename);
        }

读取上面保存的xml文件就容易多了直接调用DataSet的ReadXml方法就可以。
            DataSet ds 
= new DataSet();
            ds.ReadXml(
@"c:\temp\emp.xml");

转载于:https://www.cnblogs.com/hubcarl/archive/2009/07/15/1524130.html

猜你喜欢

转载自blog.csdn.net/weixin_33937778/article/details/93817248