C#操作xml文件入门

在项目中新建一个xml文件(PersonalResume.xml)如下:

<?xml version="1.0" encoding="utf-8" ?>
<PersonalResume>
  
<Resume genre="fantasy" ISBN="2-3631-4">
    
<title>农凤新个人简历</title>
    
<Name>Sissy</Name>
    
<Address>北京市宣武区马连道</Address>
    
<Email>nongfengxin@163.com</Email>
    
<Phone>12345678</Phone>
  
</Resume>
</PersonalResume>

 第一:往<PersonalResume>节点中插入一个<Resume>节点:

            string xmlFilePath = Server.MapPath("XML/PersonalResume.xml");
            XmlDocument xmlDoc 
= new XmlDocument();
            xmlDoc.Load(xmlFilePath);
            XmlNode root 
= xmlDoc.SelectSingleNode("PersonalResume");//查找<PersonalResume>
            XmlElement xe1 = xmlDoc.CreateElement("Resume");//创建一个<Resume>节点
            xe1.SetAttribute("genre""冯瑞涛");//设置该节点genre属性
            xe1.SetAttribute("ISBN""2-3631-4");//设置该节点ISBN属性

            XmlElement xesub1 
= xmlDoc.CreateElement("title");
            xesub1.InnerText 
= "冯瑞涛个人简历";//设置文本节点
            xe1.AppendChild(xesub1);//添加到<PersonalResume>节点中
            XmlElement xesub2 = xmlDoc.CreateElement("Name");
            xesub2.InnerText 
= "Anny";
            xe1.AppendChild(xesub2);
            XmlElement xesub3 
= xmlDoc.CreateElement("Address");
            xesub3.InnerText 
= "北京市海淀区";
            xe1.AppendChild(xesub3);

            XmlElement xesub4 
= xmlDoc.CreateElement("Email");
            xesub4.InnerText 
= "nongfengxin@gmail.com";
            xe1.AppendChild(xesub4);
            XmlElement xesub5 
= xmlDoc.CreateElement("Phone");
            xesub5.InnerText 
= "12345667";
            xe1.AppendChild(xesub5);

            root.AppendChild(xe1);
//添加到<Resume>节点中
            xmlDoc.Save(xmlFilePath);

 第二:修改节点:将genre属性值为“冯瑞涛“的节点的genre值改为“update冯瑞涛”,将该节点的子节点<Name>的文本修改为“Lily”。

   XmlNodeList nodeList = xmlDoc.SelectSingleNode("PersonalResume").ChildNodes;//获取PersonalResume节点的所有子节点
            foreach (XmlNode xn in nodeList)//遍历所有子节点
            {
                XmlElement xe 
= (XmlElement)xn;//将子节点类型转换为XmlElement类型
                if (xe.GetAttribute("genre"== "冯瑞涛")//如果genre属性值为“冯瑞涛”
                {
                    xe.SetAttribute(
"genre""update冯瑞涛");//则修改该属性为“update冯瑞涛” 

                    XmlNodeList nls 
= xe.ChildNodes;//继续获取xe子节点的所有子节点
                    foreach (XmlNode xn1 in nls)//遍历
                    {
                        XmlElement xe2 
= (XmlElement)xn1;//转换类型
                        if (xe2.Name == "Name")//如果找到
                        {
                            xe2.InnerText 
= "Lily";//则修改
                            break;//找到退出来就可以了
                        }
                    }
                    
break;
                }
            }

            xmlDoc.Save(xmlFilePath);
//保存。

第三:删除 <Resume genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <Resume genre="update冯瑞涛" ISBN="2-3631-4">节点。

 XmlNodeList xnl = xmlDoc.SelectSingleNode("PersonalResume").ChildNodes;

            
foreach (XmlNode xn in xnl)
            {
                XmlElement xe 
= (XmlElement)xn;


                
if (xe.GetAttribute("genre"== "fantasy")
                {
                    xe.RemoveAttribute(
"genre");//删除genre属性
                }
                
else if (xe.GetAttribute("genre"== "update冯瑞涛")
                {
                    xe.RemoveAll();
//删除该节点的全部内容
                }
            }
            xmlDoc.Save(xmlFilePath);

第四:显示所有数据

   XmlNode xno = xmlDoc.SelectSingleNode("PersonalResume");

            XmlNodeList xnp 
= xno.ChildNodes;

            
foreach (XmlNode xnf in xnl)
            {
                XmlElement xe 
= (XmlElement)xnf;
                Console.WriteLine(xe.GetAttribute(
"genre"));//显示属性值
                Console.WriteLine(xe.GetAttribute("ISBN"));

                XmlNodeList xnf1 
= xe.ChildNodes;
                
foreach (XmlNode xn2 in xnf1)
                {
                    Console.WriteLine(xn2.InnerText);
//显示子节点点文本
                }
            }

 源代码下载:/Files/SissyNong/XMLTest.rar

posted @ 2009-09-24 17:58  Sissynong  阅读(310)  评论(1编辑  收藏  举报