惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - skylai

mvc3 小技巧 WCF学习之旅(一)---Hello World. WCF Client configuration Jquery表单验证 Jquery的一些常用信息 二进制、SOAP的序列化及反序列化 简单的Attribute实现. 泛型之泛型约束 C#泛型之泛型委托 C#2.0泛型介绍之简单泛型类。 序列化之XML序列化(一) Vs2005的win form动态生成菜单 强制字符换行CSS版和C#版 js操作xml js的一些杂谈 一个button同时执行多个有返回值的函数的解决方法(return false; or return true;) DataGrid里应用radio单选按钮 限制字符输入(ASCII 码) 前两天刚看书看到的,来这里跟大家分享一下有关C#处理指令的问题
读写XML文件
skylai · 2006-08-07 · via 博客园 - skylai

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