操纵XML文件

本文介绍了一个具体的XML文件操作案例,包括如何添加、删除节点及更新和查询节点内容。通过C#代码展示了完整的流程,适用于初学者理解XML文件的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

我的XML文件是这样的:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <configuration>  
  3.   <root1>  
  4.     <subRoot1>Default</subRoot1>  
  5.     <subRoot2>Default</subRoot2>  
  6.     <subRoot3>Default</subRoot3>  
  7.   </root1>  
  8.   <root2>  
  9.     <subRoot1>Default</subRoot1>  
  10.   </root2>  
  11.   <root3>  
  12.     <subRoot1>Default</subRoot1>  
  13.     <subRoot2>newValue</subRoot2>  
  14.   </root3>  
  15. </configuration>  

 

接下来我们对该XML文件进行操纵

  1. /// <summary>   
  2. /// XML文件路径   
  3. /// </summary>   
  4. string strXmlFilePath = Directory.GetParent(Directory.GetParent(Application.StartupPath).ToString()) + @"/XMLFile1.xml";  
  5. /// <summary>   
  6. /// 新增节点   
  7. /// </summary>   
  8. private void btnAdd_Click(object sender, EventArgs e)  
  9. {  
  10.     XmlDocument xmlDoc = new XmlDocument();  
  11.     xmlDoc.Load(strXmlFilePath);  
  12.     XmlNode root = xmlDoc.SelectSingleNode("configuration");//查找根节点   
  13.     XmlElement xe = xmlDoc.CreateElement("root4");//创建一个<root4>节点   
  14.   
  15.     XmlElement xesub1 = xmlDoc.CreateElement("subRoot1");  
  16.     xesub1.InnerText = "Default";//设置节点文本   
  17.     xe.AppendChild(xesub1);//添加到<root4>节点中   
  18.     XmlElement xesub2 = xmlDoc.CreateElement("subRoot2");  
  19.     xesub2.InnerText = "Default";  
  20.     xe.AppendChild(xesub2);  
  21.     XmlElement xesub3 = xmlDoc.CreateElement("subRoot3");  
  22.     xesub3.InnerText = "Default";  
  23.     xe.AppendChild(xesub3);  
  24.   
  25.     root.AppendChild(xe);//添加到根节点   
  26.     xmlDoc.Save(strXmlFilePath);//保存最新XML文件   
  27. }  
  28. /// <summary>   
  29. /// 删除root4节点   
  30. /// </summary>   
  31. private void btnRemove_Click(object sender, EventArgs e)  
  32. {  
  33.     XmlDocument xmlDoc = new XmlDocument();  
  34.     xmlDoc.Load(strXmlFilePath);  
  35.     XmlNode root = xmlDoc.DocumentElement;  
  36.     XmlNodeList nodeList = xmlDoc.SelectSingleNode("configuration").ChildNodes;//获取根节点的所有子节点      
  37.     foreach (XmlNode xn in nodeList)  
  38.     {  
  39.         if (xn.Name == "root4")  
  40.         {  
  41.             //xn.RemoveAll(); //删除该节点下的全部内容   
  42.             root.RemoveChild(xn); //移除该子节点   
  43.             break;  
  44.         }  
  45.     }  
  46.     xmlDoc.Save(strXmlFilePath);//保存最新XML文件   
  47. }  
  48. /// <summary>   
  49. /// 修改root3节点下子节点subRoot2的文本   
  50. /// </summary>   
  51. private void btnUpdate_Click(object sender, EventArgs e)  
  52. {  
  53.     XmlDocument xmlDoc = new XmlDocument();  
  54.     xmlDoc.Load(strXmlFilePath);  
  55.     XmlNodeList nodeList = xmlDoc.SelectSingleNode("configuration").ChildNodes;//获取根节点的所有子节点      
  56.     foreach (XmlNode xn in nodeList)//遍历所有子节点      
  57.     {  
  58.         if (xn.Name == "root3")  
  59.         {  
  60.             XmlNodeList nls = xn.ChildNodes;//继续获取xn子节点的所有子节点      
  61.             foreach (XmlNode xn1 in nls)//遍历      
  62.             {  
  63.                 if (xn1.Name == "subRoot2")//找到      
  64.                 {  
  65.                     xn1.InnerText = "newValue";//修改      
  66.                     break;  
  67.                 }  
  68.             }  
  69.             break;  
  70.         }  
  71.     }  
  72.     xmlDoc.Save(strXmlFilePath);//保存最新XML文件   
  73. }  
  74. /// <summary>   
  75. /// 查看root3节点下子节点subRoot2的文本   
  76. /// </summary>   
  77. private void btnQuery_Click(object sender, EventArgs e)  
  78. {  
  79.     XmlDocument xmlDoc = new XmlDocument();  
  80.     xmlDoc.Load(strXmlFilePath);  
  81.     XmlNodeList nodeList = xmlDoc.SelectSingleNode("configuration").ChildNodes;//获取根节点的所有子节点      
  82.     foreach (XmlNode xn in nodeList)//遍历所有子节点      
  83.     {  
  84.         if (xn.Name == "root3")  
  85.         {  
  86.             XmlNodeList nls = xn.ChildNodes;//继续获取xn子节点的所有子节点      
  87.             foreach (XmlNode xn1 in nls)//遍历      
  88.             {  
  89.                 if (xn1.Name == "subRoot2")//找到   
  90.                 {  
  91.                     label1.Text = xn1.InnerText;  
  92.                     break;  
  93.                 }  
  94.             }  
  95.             break;  
  96.         }  
  97.     }  
  98. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值