zoukankan      html  css  js  c++  java
  • XML

    可扩展标记语言(extensible Markup language)

    序列化:把一个对象转成二进制

    反序列化:把二进制转换成对象

    创建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 book = doc.CreateElement("Book");
                //7、添加子元素到跟元素
                books.AppendChild(book);
                //8、创建子元素属性
                XmlElement name1 = doc.CreateElement("Name");
                name1.InnerText = "水浒传";
                //9、添加属性到子元素
                book.AppendChild(name1);
                //10、保存
                doc.Save("Books.xml");

    下面是创建的XML文档

    <?xml version="1.0" encoding="utf-8"?>
    <Books>
      <Book>
        <Name>水浒传</Name>
      </Book>
    </Books>

    添加带属性的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 book = doc.CreateElement("Book");
                book.SetAttribute("Name","西游记");//这是设置属性
                //7、添加子元素到跟元素
                books.AppendChild(book);
                doc.Save("Books.xml");

    下面是创建的XML文档

    <?xml version="1.0" encoding="utf-8"?>
    <Books>
      <Book Name="西游记" />
    </Books>

    文档对象模型

    建一个类,跟XML属性一致

    声明类集合,添加对象

    遍历集合,写入XML文档

    XML文档增删改查

    #region 创建XML
                XmlDocument doc = new XmlDocument();
                //首先判断xml文档是否存在,如果存在,则追加,否则创建一个
                if (File.Exists("Books.xml"))
                {
                    //加载进来
                    doc.Load("Books.xml");
                    //获得根节点,给子节点追加
                    XmlElement books = doc.DocumentElement;
                    XmlElement book = doc.CreateElement("Book");
                    book.SetAttribute("Id", "1");
                    books.AppendChild(book);
                    XmlElement name = doc.CreateElement("Name");
                    name.InnerXml = "水浒传";
                    book.AppendChild(name);
                }
                else
                {
                    //不存在
                    XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
                    doc.AppendChild(dec);
                    XmlElement books = doc.CreateElement("Books");
                    doc.AppendChild(books);
                    XmlElement book = doc.CreateElement("Book");
                    book.SetAttribute("Id", "01");
                    books.AppendChild(book);
                    XmlElement name = doc.CreateElement("Name");
                    name.InnerXml = "西游记";
                    book.AppendChild(name);
    
                }
                doc.Save("Books.xml");
                #endregion
                #region 查询XML
                //元素查询
                XmlDocument doc = new XmlDocument();
                doc.Load("Books.xml");
                XmlElement books = doc.DocumentElement;
                XmlNodeList xnl = books.ChildNodes;
                foreach (XmlNode item in xnl)
                {
                    //获取元素内容
                    Console.WriteLine(item.InnerText);
                }
                //属性查询
                XmlDocument doc = new XmlDocument();
                doc.Load("Books.xml");
                XmlElement books = doc.DocumentElement;
                XmlNodeList xnl2 = books.ChildNodes;
                foreach (XmlNode item in xnl2)
                {
                    //获取属性值
                    Console.WriteLine(item.Attributes["Id"].Value);
                    if (item.Attributes["Id"].Value == "1")
                    {
                        //修改XML
                        item.Attributes["Id"].Value = "001";
                    }
                }
                //使用XPath的方式来读取XML文件
                XmlDocument doc = new XmlDocument();
                doc.Load("Books.xml");
                XmlElement books = doc.DocumentElement;
                XmlNode xnl = books.SelectSingleNode("/Books/Book/Name");
                Console.WriteLine(xnl.InnerText);
                //使用XPath的方式来读取XML文件属性值
                XmlDocument doc = new XmlDocument();
                doc.Load("Books.xml");
                XmlElement books = doc.DocumentElement;
                XmlNode xnl = books.SelectSingleNode("/Books/Book[@Id='001']");
                Console.WriteLine(xnl.InnerText);
                #endregion
                #region 删除XML
                //删除文件,除根节点外,xml文件不允许没有根节点
                XmlDocument doc = new XmlDocument();
                doc.Load("Books.xml");
                XmlElement books = doc.DocumentElement;
                books.RemoveAll();
                doc.Save("Books.xml");
          //删除XML节点
           XmlDocument doc = new XmlDocument();
           XmlElement books = doc.DocumentElement;
           XmlNode xn = books.SelectSingleNode("/Books/Book[@Id='001']");
           XmlNode items = books["Name"];//books.SelectSingleNode("/Books/Book/Name");
           items.RemoveChild(xn);//只能是直系父级删除子节点
           doc.Save("Books.xml");
           //删除节点属性
           XmlDocument doc = new XmlDocument();
           XmlElement books = doc.DocumentElement;
           XmlNode xn = books.SelectSingleNode("/Books/Book[@Id='001']");
           xn.Attributes.RemoveNamedItem("Id");
           doc.Save("Books.xml");
                #endregion

    所操作的XML文档

    <?xml version="1.0" encoding="utf-8"?>
    <Books>
      <Book Id="001">
        <Name>水浒传</Name>
      </Book>
    </Books>
  • 相关阅读:
    关于js计算非等宽字体宽度的方法
    [NodeJs系列]聊一聊BOM
    Vue.js路由管理器 Vue Router
    vue 实践技巧合集
    微任务、宏任务与Event-Loop
    事件循环(EventLoop)的学习总结
    Cookie、Session和LocalStorage
    MySQL 树形结构 根据指定节点 获取其所在全路径节点序列
    MySQL 树形结构 根据指定节点 获取其所有父节点序列
    MySQL 创建函数报错 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators
  • 原文地址:https://www.cnblogs.com/xiaonangua/p/7308219.html
Copyright © 2011-2022 走看看