可扩展的标记语言(eXtensible Markup Language)

优点:容易读懂;格式标准任何语言都内置了XML分析引擎,不用单独进行文件分析引擎的编写。
用普通二进制传输数据的缺点,解析方式各异
XML语法规范:标签(Tag)、嵌套(Nest)、属性。标签要闭合,属性值要用""包围,标签可以互相嵌套
大小写敏感(CaseSensitive):标签、属性名是区分大小写的。
XML树,父节点、子节点、兄弟节点(siblings)
XML和HTML的区别:XML中元素必须关闭!XML中元素的属性值必须用引号。Html大小写不敏感,xml大小写敏感,html主要是用来显示数据的,xml主要是存储数据。
 
XML中XmlElement和XmlNode的区别
Xml节点有多种类型:属性节点、注释节点、文本节点、元素节点等
Xml元素:元素节点。 继承自XmlNode
InnerText和InnerXML:InnerText在xml文件里显示的部分 如果有尖括号 会被转译 而InnerXML不会!
xml内所有的内容都是节点 标签式元素
SetAttribute 属性设置 
DocumentElement 根节点
 
创建xml文件的步骤:
   1.在内存中创建xml

XmlDocument doc = new XmlDocument();

2.在内存中创建xml声明

  XmlDeclaration dec =  doc.CreateXmlDeclaration("1.0", "utf-8", null);

   doc.AppendChild(dec);//添加到xml文档上

3.添加根节点

           //根节点 Order

            XmlElement order = doc.CreateElement("Order");

            doc.AppendChild(order);

            //创建子节点元素

            XmlElement customerName = doc.CreateElement("CustomerName");

            customerName.InnerText = "小三";

            //追加到父节点order上

            order.AppendChild(customerName);

4.添加子节点及属性

             XmlElement items = doc.CreateElement("Items");

             order.AppendChild(items);

             //添加属性

             XmlElement orderItem1 = doc.CreateElement("OrderItem");

             orderItem1.SetAttribute("Name", "小三");

             orderItem1.SetAttribute("Count","");

             items.AppendChild(orderItem1);

5.//保存到文件

 doc.Save("order.xml");//从内存中保存到xml中

怎么读xml文件 标签没有属性的情况:

              XmlDocument doc = new XmlDocument();

             //加载xml文件

             doc.Load("books.xml");//在这之前要判断文件是否存在

             //根节点

             XmlElement books = doc.DocumentElement;//找到根节点DocumentElement

             //books 下的所有book元素

             XmlNodeList xnl = books.ChildNodes;

             foreach (XmlNode node in xnl)

             {

                 Console.WriteLine(node.ChildNodes[].InnerText);

                 Console.WriteLine(node.ChildNodes[].InnerText);

             }

有属性的情况:

            XmlDocument doc = new XmlDocument();

             doc.Load("order.xml");

             //根节点

             XmlElement root =  doc.DocumentElement;

             XmlNodeList xnl = root.ChildNodes;

             //读取标签的名字

             //Console.WriteLine(xnl[0].Name);

             Console.WriteLine(xnl[].InnerText);

             Console.WriteLine(xnl[].InnerText);

             XmlNode items = xnl[];

             //orderitem

             XmlNodeList xnl1 = items.ChildNodes;

             foreach (XmlNode node in xnl1)

             {

                 //获取属性的值

                 Console.WriteLine(node.Attributes["Name"].Value);

                 Console.WriteLine(node.Attributes["Count"].Value);

             }

修改指定的节点

            XmlDocument doc = new XmlDocument();

             doc.Load("order.xml");

             //修改指定的节点

             //XmlNode node = doc.SelectSingleNode("/Order/CustomerName");

             //node.InnerText = "小薇";

             ////Console.WriteLine(node.InnerText);

             //doc.Save("order.xml");

             //使用xpath  读取指定的节点 此种方式比较方便

             //XmlNode node = doc.SelectSingleNode("/Order/CustomerName");

             //Console.WriteLine(node.InnerText);

            //XmlNodeList xnl =  doc.SelectNodes("/Order/Items/OrderItem");

            //foreach (XmlNode node in xnl)

            //{

            //    Console.WriteLine(node.Attributes["Name"].Value);

            //    Console.WriteLine(node.Attributes["Count"].Value);

            //}

             //根据标签的属性,读取指定的节点

             XmlNode node = doc.SelectSingleNode("/Order/Items/OrderItem[@Name='媳妇']");

             node.Attributes["Count"].Value = "";

             doc.Save("order.xml");
04-28 02:33