读写XML文件

        以前做的一些功能现在把它写下来。
<?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");

你可能感兴趣的:(xml)