• .NET 基础 一步步 一幕幕[XML基础操作]


    XML可扩展标记语言标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言

    什么是XML,学他有什么用?

    优点:容易读懂,格式标准任何语言都内置了XML分析引擎,不用单独进行文件分析引擎得编写。

    XML语法规范:标签(Tag)、嵌套(Nest)、属性。标签要闭合,属性值要用””包围,标签可以相互嵌套。

    大小写敏感。

    XML树,父节点、子节点、兄弟节点。

    写入一个XML文件

    //1、创建一个XML文档对象

                XmlDocument doc = new XmlDocument();

                //2、创建第一行描述信息

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

                //3、将创建的第一行数据添加到文档中

                doc.AppendChild(dec);

                //4、给文档添加根节点

                XmlElement books = doc.CreateElement("Books");

                //5、将根节点添加给文档对象

                doc.AppendChild(books);

     

                //6、给根节点添加子节点

                XmlElement book1 = doc.CreateElement("Book");

                //将子节点book1添加到根节点下

                books.AppendChild(book1);

     

                //7、给book1添加子节点

                XmlElement bookName1 = doc.CreateElement("BookName");

                //8、设置标签中显示的文本

                bookName1.InnerText = "水浒传";

                book1.AppendChild(bookName1);

     

                XmlElement author1 = doc.CreateElement("Author");

                author1.InnerText = "<authorName>匿名</authorName>";

                book1.AppendChild(author1);

     

                XmlElement price1 = doc.CreateElement("Price");

                price1.InnerXml = "<authorName>匿名</authorName>";

                book1.AppendChild(price1);

     

                XmlElement des1 = doc.CreateElement("Des");

                des1.InnerXml = "好看,顶!~!!!!";

                book1.AppendChild(des1);

     

                Console.WriteLine("保存成功");

                doc.Save("Book.xml");

    演示结果:

    <?xml version="1.0" encoding="utf-8" ?>

    <Books>

      <Book>

        <BookName>水浒传</BookName>

        <Author>XXX</Author>

        <Price>100RMB</Price>

        <Des>好看!!经典!!!!顶!!!!</Des>

      </Book>

      <Book>

        <BookName>三国演义</BookName>

        <Author>XXX</Author>

        <Price>200RMB</Price>

        <Des>好看,顶!!!!</Des>

      </Book>

    </Books>

     

    添加带属性的XML文档

    XmlDocument doc = new XmlDocument();

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

                doc.AppendChild(dec);

     

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

                doc.AppendChild(order);

     

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

                customerName.InnerXml = "刘洋";

                order.AppendChild(customerName);

     

                XmlElement orderNumber = doc.CreateElement("OrderNumber");

                orderNumber.InnerXml = "10000";

                order.AppendChild(orderNumber);

     

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

                order.AppendChild(items);

     

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

                orderItem1.SetAttribute("Name", "码表");

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

                items.AppendChild(orderItem1);

     

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

                orderItem2.SetAttribute("Name", "雨衣");

                orderItem2.SetAttribute("Count", "1");

                items.AppendChild(orderItem2);

                doc.Save("Order.xml");

     

    文档对象模型

    对象实体:

    Public class Student

        {

            public int Age { get; set; }

            public string Name { get; set; }

            public int ID { get; set; }

            public char Gender { get; set; }

        }

     

    List<Student> list = new List<Student>();

                list.Add(new Student() { ID = 1, Name = "yhb", Gender = '男', Age = 30 });

                list.Add(new Student() { ID = 2, Name = "wl", Gender = '女', Age = 20 });

                list.Add(new Student() { ID = 3, Name = "刘德华", Gender = '男', Age = 50 });

                list.Add(new Student() { ID = 4, Name = "张学友", Gender = '男', Age = 60 });

                list.Add(new Student() { ID = 5, Name = "哥哥", Gender = '男', Age = -10 });

     

                XmlDocument doc = new XmlDocument();

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

     

                doc.AppendChild(dec);

     

                XmlElement person = doc.CreateElement("Person");

                doc.AppendChild(person);

     

                //通过循环List集合,获得所有对象 以节点的形式添加到XML文档中

                for (int i = 0; i < list.Count; i++)

                {

                    XmlElement student = doc.CreateElement("Student");

                    student.SetAttribute("studentID", list[i].ID.ToString());

                    XmlElement name = doc.CreateElement("Name");

                    name.InnerXml = list[i].Name;

                    XmlElement age = doc.CreateElement("Age");

                    age.InnerXml = list[i].Age.ToString();

                    XmlElement gender = doc.CreateElement("Gender");

                    gender.InnerXml = list[i].Gender.ToString();

                    //添加

                    person.AppendChild(student);

                    student.AppendChild(name);

                    student.AppendChild(age);

                    student.AppendChild(gender);

                }

                doc.Save("Student.xml");

      对xml文档实现增删改查

             //XMLDocument

               #region 对xml文档实现追加的需求

               XmlDocument doc = new XmlDocument();

               //首先判断xml文档是否存在 如果存在 则追加  否则创建一个

               if (File.Exists("Student.xml"))

               {

                   //加载进来

                   doc.Load("Student.xml");

                   //追加

                   //获得根节点 给根节点添加子节点

                   XmlElement person = doc.DocumentElement;

     

                   XmlElement student = doc.CreateElement("Student");

                   student.SetAttribute("studentID", "10");

                   person.AppendChild(student);

     

                   XmlElement name = doc.CreateElement("Name");

                   name.InnerXml = "我是新来哒";

                   student.AppendChild(name);

     

                   XmlElement age = doc.CreateElement("Age");

                   age.InnerXml = "18";

                   student.AppendChild(age);

     

                   XmlElement gender = doc.CreateElement("Gender");

                   gender.InnerXml = "女";

                   student.AppendChild(gender);

     

               }

               else

               {

                   //不存在

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

                   doc.AppendChild(dec);

                   XmlElement person = doc.CreateElement("Person");

                   doc.AppendChild(person);

                   XmlElement student = doc.CreateElement("Student");

                   student.SetAttribute("studentID", "110");

                   person.AppendChild(student);

                   XmlElement name = doc.CreateElement("Name");

                   name.InnerXml = "张三三李思思";

                   student.AppendChild(name);

                   XmlElement age = doc.CreateElement("Age");

                   age.InnerXml = "28";

                   student.AppendChild(age);

     

                   XmlElement gender = doc.CreateElement("Gender");

                   gender.InnerXml = "男";

                   student.AppendChild(gender);

               }

               doc.Save("Student.xml");

               Console.WriteLine("保存成功");

               #endregion

               #region 读取XML文档

               XmlDocument doc = new XmlDocument();

               doc.Load("OrDER.xml");

               还是 先获得根节点

               XmlElement order = doc.DocumentElement;

               获得根节点下面的所有子节点

               XmlNodeList xnl = order.ChildNodes;

               foreach (XmlNode item in xnl)

               {

                   Console.WriteLine(item.InnerText);

               }

               XmlElement items = order["Items"];

               XmlNodeList xnl2 = items.ChildNodes;

               foreach (XmlNode item in xnl2)

               {

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

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

                   if (item.Attributes["Name"].Value == "手套")

                   {

                       item.Attributes["Count"].Value = "新来哒";

                   }

               }

               doc.Save("OrDER.xml");

               #endregion

               #region 使用XPath的方式来读取XML文件

               XmlDocument doc = new XmlDocument();

               doc.Load("order.xml");

               //获得根节点

               XmlElement order = doc.DocumentElement;

               XmlNode xn = order.SelectSingleNode("/Order/Items/OrderItem[@Name='雨衣']");

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

               xn.Attributes["Count"].Value = "woshi new";

               doc.Save("order.xml");

               Console.WriteLine("保存成功");

               #endregion

               XmlDocument doc = new XmlDocument();

               doc.Load("order.xml");

               //doc.RemoveAll();不行 根节点不允许删除

               XmlElement order = doc.DocumentElement;

               order.RemoveAll(); 移除根节点下的所有子节点

               XmlNode xn = order.SelectSingleNode("/Order/Items/OrderItem[@Name='雨衣']");

               //让orderItem去删除属性

               XmlNode orderItem = order.SelectSingleNode("/Order/Items/OrderItem");

               //获得Items节点

               XmlNode items = order["Items"];//order.SelectSingleNode("/Order/Items");

               items.RemoveChild(xn); //移除当前节点

                //orderItem.RemoveAttributeNode(xn.Attributes["Count"]);

               xn.Attributes.RemoveNamedItem("Count");

               doc.Save("order.xml");

               Console.WriteLine("删除成功");

    本篇就到这里了,最后打个小广告:QQ群: .NET 一步步一幕幕  群号:590170361 (加群备注:博客园看到的)

  • 相关阅读:
    js 动态 activex 组件
    nodejs 任务调度使用
    javascript 停止事件冒泡以及阻止默认事件冒泡
    使用SQL字符串反转函数REVERSE巧妙实现lastindexof功能
    morris.js 简单学习
    weblogic启动受管服务器报错Authentication for user weblogic denied (weblogic 11g 域账号密码不生效的解决方法)
    正向代理与反向代理【总结】
    不休息的工作都是浪费时间
    Oracle实例名,服务名等概念区别与联系
    Tomcat启动找不到JRE_HOME的解决方法
  • 原文地址:https://www.cnblogs.com/yuhangwang/p/7011199.html
Copyright © 2020-2023  润新知