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:自动亮起100盏灯
    JS字面量创建方式的优缺点
    为什么说对象字面量赋值比new Object()高效?
    javascript 字面量
    vue学习(一)、Vue.js简介
    Redis(二):c#连接Redis
    Redis(一):centos下安装。
  • 原文地址:https://www.cnblogs.com/xiaonangua/p/7308219.html
Copyright © 2011-2022 走看看