C# 操作xml(转)
四、xml
1、概念:XML可扩展的标记语言类似于HTML
XML:存储数据
注意:
XM工是严格区分大小写的。
XML标签也是成对出现的。
2、通过代码来创建xML文档
1、引用命名空间
using System.Xml;
2、创建XML文档对象
XmlDocument doc = new XmlDocument();
3、创建第一行描述信息,并且添加到doc文档中
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8",null);
doc.AppendChild(dec);
4、创建一个根节点,并且添加到doc文档中---必须有
XmlElement books = doc.CreateElement("Books");
doc.AppendChild(books);
5、给根节点创建一个子节点
XmlElement book1 = doc.CreateElement("Book");
6、将book添加到根节点
books.AppendChild(book1);
7、为book1创建新的节点
![](https://pic2.zhimg.com/80/v2-ba2db3b66e903f3a100b81cd7df662a1_720w.webp)
8、保存文档
![](https://pica.zhimg.com/80/v2-f865a0c2d20ce005696aaf376b603bec_720w.webp)
3、添加标签与添加属性
1、添加标签
1、是上文,创建一个标签然后加入节点中
2、通过innerxml:添加
![](https://picx.zhimg.com/80/v2-07217676130c2c894a79736c93004d3f_720w.webp)
所以添加文本用InnerText
添加标签用innerxml
2、添加属性:在节点orderItem中添加Name = “ 奥特曼”和…
![](https://picx.zhimg.com/80/v2-620e804db201ca346c083575c1570c07_720w.webp)
4、元素和节点
元素(CreateElement):XML文档中的所有内容都是元素
节点:XML文档中的每一个标签都是节点
节点包含元素
并且注意:XML文档有且只能有一个根节点(必须有)
五、追加,读取,删除xml文档
1、追加xml文档
1、首先
1、引用命名空间
using System.Xml;
2、创建XML文档对象
XmlDocument doc = new XmlDocument();
2、判断文档受否存在
1、如果存在
首先加载目标xml文档
doc.Load("Books.xml")
然后获得文件的根节点
XmlElement books = doc.DocumentElement;
2、如果不存在
创建一个新的文档创建一个新的根节点
创建第一行
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0","utf-8",null);
doc.AppendChild(dec);
创建根节点
XmlElement books = doc.CreateElement("Books");
doc.AppendChild(books);
3、下面追加的内容同上
![](https://picx.zhimg.com/80/v2-dc5336c327d8d0b2fd5ac975a42b06c3_720w.webp)
2、读取xml文档
1、首先
1、引用命名空间
using System.Xml;
2、创建XML文档对象
XmlDocument doc = new XmlDocument();
2、加载目标xml文档
doc.Load("Books.xml")
3、获得根节点
XmlElement books = doc.DocumentElement;
4、获得子节点 返回节点的集合
XmlNodeList xnl = doc.ChildNodes;
![](https://pic1.zhimg.com/80/v2-670b66fc6c011c9c1ada8bfde61ce6a0_720w.webp)
3、读取带属性的文档
1、首先
1、引用命名空间
using System.Xml;
2、创建XML文档对象
XmlDocument doc = new XmlDocument();
2、加载目标xml文档
doc.Load("Books.xml")
3、读取特定的节点列表(不一定只有一个)
XmlNodeList xnl = doc.SelectNodes("/Order/Items/OrderItem");
![](https://pic3.zhimg.com/80/v2-218131f6d78e908f803f53fef6e0813e_720w.webp)
六、委托
1、什么是委托
1、为什么要使用委托
将一个方法作为参数传递给另一个方法,而方法的类型就是委托。
2、委托概念和语法
委托就是指向一个函数的变量
![](https://pica.zhimg.com/80/v2-fcf5499124ca3f6ce1f44b38789519c4_720w.webp)
首先注意:声明一个委托类型->委托所指向的函数必须跟委托具有相同的签名(参数和返回值)。
1、命名空间下声明一个委托
![](https://pic1.zhimg.com/80/v2-a2668ba597437dfe747686e2acd7a65e_720w.webp)
2、Main函数中可以声明一个自己创建的委托
![](https://pic1.zhimg.com/80/v2-449af46f2d1350d1ca0243a94929113a_720w.webp)
2、也可以在声明一个方法,然后用这个方法在通过委托调用其他的方法
![](https://pica.zhimg.com/80/v2-53efb36af4dfb8ff83c5c7558965899c_720w.webp)
2、委托的好处。
比如,有一个字符串数组,这个数组由用户决定它是大写还是小写
![](https://picx.zhimg.com/80/v2-620d689e6866e4985d114c12af19206f_720w.webp)
3、匿名函数
当方法仅仅使用一次时,可以考虑使用匿名函数,可以节省空间
![](https://pic1.zhimg.com/80/v2-40e9116dc1f63816b1455ab7eb4fd69e_720w.webp)
例子二、
![](https://pic2.zhimg.com/80/v2-08862ee881341a187f8a5ec412707615_720w.webp)
转自知乎