XML(Extensible Markup Language),中文为可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
    XML可以用来标记数据、定义数据类型,可以允许用户对自己标记语言进行定义,是对人和机器都比较友好的数据承载方式。它提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据,非常适合万维网传输,是Internet环境中跨平台、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。

    html:显示数据
    xml:存储数据

    XML区分大小写,标签成对出现,有且只有一个根节点

    通过代码来创建XML文件

    1. using System;
    2. using System.Xml;
    3. namespace _137_创建XML
    4. {
    5. class Program
    6. {
    7. static void Main(string[] args)
    8. {
    9. #region 1
    10. //通过代码来创建XML文件
    11. //1、引用命名空间
    12. //2、创建XML文档对象
    13. XmlDocument doc = new XmlDocument();
    14. //3、创建一个行描述信息,并且添加到doc文档
    15. XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
    16. doc.AppendChild(dec);
    17. //4、创建根节点
    18. XmlElement books = doc.CreateElement("Books");
    19. //将根节点添加到文档中
    20. doc.AppendChild(books);
    21. //5、给根节点Books创建子节点
    22. XmlElement book1 = doc.CreateElement("Book");
    23. //将book添加到根节点
    24. books.AppendChild(book1);
    25. XmlElement book2 = doc.CreateElement("Book");
    26. books.AppendChild(book2);
    27. //6、给Book添加子节点
    28. XmlElement name1 = doc.CreateElement("Name");
    29. name1.InnerText = "金瓶梅";
    30. book1.AppendChild(name1);
    31. XmlElement price1 = doc.CreateElement("Price");
    32. price1.InnerText = "100";
    33. book1.AppendChild(price1);
    34. XmlElement des1 = doc.CreateElement("Des");
    35. des1.InnerText = "小黄书";
    36. book1.AppendChild(des1);
    37. //给Book添加子节点
    38. XmlElement name2 = doc.CreateElement("Name");
    39. name2.InnerText = "飘飘欲仙";
    40. book2.AppendChild(name2);
    41. XmlElement price2 = doc.CreateElement("Price");
    42. price2.InnerText = "999";
    43. book2.AppendChild(price2);
    44. XmlElement des2 = doc.CreateElement("Des");
    45. des2.InnerText = "大黄书";
    46. book2.AppendChild(des2);
    47. //
    48. XmlElement x1 = doc.CreateElement("X1");
    49. x1.InnerText = "<p>我是一个p标签</p>";
    50. books.AppendChild(x1);
    51. XmlElement x2 = doc.CreateElement("X2");
    52. x2.InnerXml = "<p>我是一个p标签</p>";
    53. books.AppendChild(x2);
    54. doc.Save("Books.xml");
    55. Console.WriteLine("11保存成功");
    56. #endregion
    57. Console.ReadKey();
    58. }
    59. }
    60. }
    61. using System;
    62. using System.Xml;
    63. namespace _138_创建带属性的XML文档
    64. {
    65. class Program
    66. {
    67. static void Main(string[] args)
    68. {
    69. //创建带属性的xml文档
    70. XmlDocument xDoc = new XmlDocument();
    71. XmlDeclaration xDec = xDoc.CreateXmlDeclaration("1.0", "utf-8", null);
    72. //将第一行添加到文档中
    73. xDoc.AppendChild(xDec);
    74. //创建根节点1
    75. XmlElement order = xDoc.CreateElement("Order");
    76. xDoc.AppendChild(order);
    77. //给根节点创建子节点
    78. XmlElement customerName = xDoc.CreateElement("CustomerName");
    79. customerName.InnerText = "微咲";
    80. order.AppendChild(customerName);
    81. XmlElement orderNumber = xDoc.CreateElement("OrderNumber");
    82. orderNumber.InnerText = "00000001";
    83. order.AppendChild(orderNumber);
    84. XmlElement items = xDoc.CreateElement("Items");
    85. order.AppendChild(items);
    86. //给Items创建子节点
    87. XmlElement orderItem1 = xDoc.CreateElement("OrderItem");
    88. //给节点添加属性
    89. orderItem1.SetAttribute("Name", "英雄联盟");
    90. orderItem1.SetAttribute("Count", "7");
    91. //将节点添加到Items中
    92. items.AppendChild(orderItem1);
    93. XmlElement orderItem2 = xDoc.CreateElement("OrderItem");
    94. orderItem2.SetAttribute("Name", "羽毛球");
    95. orderItem2.SetAttribute("Count", "2");
    96. items.AppendChild(orderItem2);
    97. XmlElement orderItem3 = xDoc.CreateElement("OrderItem");
    98. orderItem3.SetAttribute("Name", "编程");
    99. orderItem3.SetAttribute("Count", "1");
    100. items.AppendChild(orderItem3);
    101. xDoc.Save("order.xml");
    102. Console.WriteLine("保存成功");
    103. Console.ReadKey();
    104. }
    105. }
    106. }

    追加XML文档 (文档是否存在)

    1. using System;
    2. using System.Xml;
    3. using System.IO;
    4. namespace _139_XMl文档中追加
    5. {
    6. class Program
    7. {
    8. static void Main(string[] args)
    9. {
    10. //追加XML文档
    11. XmlDocument doc = new XmlDocument();
    12. if (File.Exists("order.xml"))
    13. {
    14. //如果文件存在 加载XML
    15. doc.Load("order.xml");
    16. //获得文件的根节点
    17. XmlElement order = doc.DocumentElement;
    18. }
    19. else
    20. {
    21. //如果文件不存在
    22. //创建第一行
    23. XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
    24. doc.AppendChild(dec);
    25. //创建跟节点
    26. XmlElement order = doc.CreateElement("Order");
    27. doc.AppendChild(order);
    28. }
    29. doc.Save("Order.xml");
    30. }
    31. }
    32. }

    order.xml

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <Order>
    3. <CustomerName>微咲</CustomerName>
    4. <OrderNumber>00000001</OrderNumber>
    5. <Items>
    6. <OrderItem Name="英雄联盟" Count="7" />
    7. <OrderItem Name="羽毛球" Count="2" />
    8. <OrderItem Name="编程" Count="1" />
    9. </Items>
    10. </Order>

    读取XML
    读取带有属性的XML文档

    1. using System;
    2. using System.Xml;
    3. namespace _140_读取XML文档
    4. {
    5. class Program
    6. {
    7. static void Main(string[] args)
    8. {
    9. XmlDocument doc = new XmlDocument();
    10. //加载要读取的xml文档
    11. doc.Load("order.xml");
    12. //获得根节点
    13. XmlElement order = doc.DocumentElement;
    14. //获得子节点 集合
    15. XmlNodeList xnl= order.ChildNodes;
    16. foreach (XmlNode item in xnl)
    17. {
    18. Console.WriteLine(item.InnerText);
    19. }
    20. Console.ReadKey();
    21. }
    22. }
    23. }

    删除XML节点中数据

    1. using System;
    2. using System.Xml;
    3. namespace _141_删除XML中节点
    4. {
    5. class Program
    6. {
    7. static void Main(string[] args)
    8. {
    9. XmlDocument doc = new XmlDocument();
    10. doc.Load("order.xml");
    11. //拿到指定节点的名字
    12. XmlNode xn= doc.SelectSingleNode("/Order/Items");
    13. xn.RemoveAll();
    14. doc.Save("order.xml");
    15. Console.WriteLine("删除成功");
    16. Console.ReadKey();
    17. }
    18. }
    19. }