首页 > 其他 > 详细

Xml增删改查

时间:2017-02-14 11:54:23      阅读:218      评论:0      收藏:0      [点我收藏+]
<?xml version="1.0" encoding="utf-8"?>
<books>
  <book1>
    <name>水浒传</name>
    <author>作者</author>
  </book1>
  <Student studentId="10">
    <Name>我是学生1</Name>
    <Sex>
      <a></a>
    </Sex>
    <price name="价格" count="1000"    />
  </Student>
</books>

 

1增

技术分享
 1 using System;
 2 using System.Collections.Generic;
 3 using System.IO;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 using System.Xml;
 8 
 9 namespace ConsoleApplication10
10 {
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             XmlDocument doc = new XmlDocument();
16             //先判断xml文件是否已经存在,如果存在,就追加;不存在,新建。
17             if(File.Exists("a.xml"))
18             {
19                 //存在
20                 //先加载进来
21                 doc.Load("a.xml");
22                 //获得根节点
23                  XmlElement gen=  doc.DocumentElement;
24 
25                 //给根节点添加子节点
26                  XmlElement student1 = doc.CreateElement("Student");
27                 //设置标签属性
28                  student1.SetAttribute("studentId","10");
29                  gen.AppendChild(student1);
30                 //添加子子标签
31                  XmlElement name1 = doc.CreateElement("Name");
32                  name1.InnerXml = "我是学生1";
33                  student1.AppendChild(name1);
34                 // XmlElement sex1 = doc.CreateElement("Sex"); sex1.InnerXml = "<a>男</a>";
35                  XmlElement sex1 = doc.CreateElement("Sex"); sex1.InnerXml = "";
36                  student1.AppendChild(sex1);
37             }
38             else
39             {
40             //不存在
41                 XmlDeclaration dec = doc.CreateXmlDeclaration("1.0","utf-8",null);
42                 doc.AppendChild(dec);
43                 XmlElement gen = doc.CreateElement("gen");
44                 doc.AppendChild(gen);
45 
46                 //给根节点添加子节点
47                 XmlElement student1 = doc.CreateElement("Student");
48                 //设置标签属性
49                 student1.SetAttribute("studentId", "10");
50                 gen.AppendChild(student1);
51                 //添加子子标签
52                 XmlElement name1 = doc.CreateElement("Name");
53                 name1.InnerXml = "我是学生1";
54                 student1.AppendChild(name1);
55                 // XmlElement sex1 = doc.CreateElement("Sex"); sex1.InnerXml = "<a>男</a>";
56                 XmlElement sex1 = doc.CreateElement("Sex"); sex1.InnerXml = "";
57                 student1.AppendChild(sex1);
58             }
59             //最终都要保存
60             doc.Save("a.xml");
61             Console.WriteLine("保存成功");
62         }
63     }
64 }
View Code

2删

技术分享
 1 using System;
 2 using System.Collections.Generic;
 3 using System.IO;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 using System.Xml;
 8 
 9 namespace ConsoleApplication10
10 {
11     class Program
12     {
13         static void Main(string[] args)
14         {
15         
16             XmlDocument doc = new XmlDocument();
17             doc.Load("a.xml");
18            // doc.RemoveAll();//不行,根节点不允许删除
19             XmlNode gen = doc.DocumentElement;
20             //gen.RemoveAll();//移除根节点下所有的子节点
21             #region 删除一个指定的标签
22             ////寻找指定的节点,注意path格式
23             //XmlNode xn = gen.SelectSingleNode("/books/Student/price[@name=‘价格‘]");
24             ////获得上面price节点的上节点
25             //XmlNode shangxn = doc.SelectSingleNode("/books/Student");
26             //shangxn.RemoveChild(xn);//删除方法必须是上一个节点删除下一个节点
27             #endregion
28 
29 
30             #region 删除一个指定的标签内的属性
31             //寻找指定标签
32             XmlNode xn = gen.SelectSingleNode("/books/Student/price[@name=‘价格‘]");
33             //删除指定标签内的属性
34             xn.Attributes.RemoveNamedItem("count");
35             #endregion
36 
37 
38             doc.Save("a.xml");
39             Console.WriteLine("删除成功");
40             Console.ReadLine();
41 
42 
43 
44         }
45     }
46 }
View Code

 

 

3查改

技术分享
 1 using System;
 2 using System.Collections.Generic;
 3 using System.IO;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 using System.Xml;
 8 
 9 namespace ConsoleApplication10
10 {
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             #region 普通方法查询
16            // XmlDocument doc = new XmlDocument();
17            ////获得根节点
18            // XmlElement gen = doc.DocumentElement;
19            // //获得根节点下所有的子节点 
20            // XmlNodeList xnl = gen.ChildNodes;
21            // foreach (XmlNode xn in xnl)
22            // {
23            //     Console.WriteLine(xn.InnerText);//获取所有子节点的值
24            //     //但是如果有属性,就获取不到属性的值
25            // }
26 
27 
28            // //<Sex><a></a></Sex>,只有一个这样的标签
29            // XmlElement items = gen["Sex"];//根据标签查找
30            
31            // XmlNodeList xnl2 = items.ChildNodes;
32            // foreach (XmlNode xn in xnl2)
33            // {
34            //     Console.WriteLine(xn.Attributes["a"].Value);//得到“男”
35            // }
36            // //最终都要保存
37            // doc.Save("a.xml");
38            // Console.WriteLine("保存成功");
39             #endregion
40 
41             #region 使用XPath的方式来读取XML文件
42             XmlDocument doc = new XmlDocument();
43             doc.Load("a.xml");
44             //获得根节点
45             XmlElement gen = doc.DocumentElement;
46 
47             //XmlNode xn = gen.SelectSingleNode("/books/book1/name");//  "/根节点/子节点/包裹值得标签"
48             //Console.WriteLine(xn.InnerText);
49 
50             XmlNode xn = gen.SelectSingleNode("/books/Student/price[@name=‘价格‘]");//  "/根节点/子节点/子节点内的标签[@标签属性=‘属性值‘]"
51             Console.WriteLine(xn.Attributes["count"].Value);//取值 count为标签内属性
52             xn.Attributes["count"].Value = "2000";//修改值
53 
54 
55             doc.Save("a.xml");//保存
56             Console.ReadKey();
57 
58             #endregion
59 
60 
61 
62         }
63     }
64 }
View Code

 

 

 

完!!

Xml增删改查

原文:http://www.cnblogs.com/wwz-wwz/p/6396796.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!