• C#-XML-数据传输


    http://www.cnblogs.com/fengxuehuanlin/p/5631664.html

    关于xml是属于一个比较重要的东西,在平时开发的过程中,这块内容最主要的是要掌握XML内容的读取和写入操作。

    xml可作为小型数据库用来存储数据。

    html主要用来显示数据,XAML前台设计。

    一.什么是XML?

    • XML 指可扩展标记语言(EXtensible Markup Language)--可扩展意味着标签可以自定义,不像html固定标签。
    • XML 是一种标记语言,很类似HTML
    • XML 的设计宗旨是传输数据,而非显示数据
    • XML 标签没有被预定义,您需要自行定义标签
    • XML 被设计为具有自我描述性
    • XML 是W3C 的推荐标准

    二.XML语法:

    1.一个XML包含以下几部分内容:

    文档声明,元素,属性,注释,CDATA(特殊字符),处理指令,node节点

    • 节点包含元素(文本中见到的所有东西都是节点,元素指的是标签)。
    • 只能有一个根节点
    2.最简单的声明格式     
    <?xml version="1.0" ?>
    用encoding属性声明文档的编码     
    <?xml version="1.0" encoding="UTF-8" ?>
    用standalone属性说明文档是否独立     
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 

    三、写入XML内容:

    • dom-document object model(XmlDocument文档对象),注意必须先有一个根节点。
    //通过代码来创建XML文档
                //1、引用命名空间
                //2、创建XML文档对象
                XmlDocument doc = new XmlDocument();
                //3.创建第一行描述信息,添加到doc文档中
               XmlDeclaration dec= doc.CreateXmlDeclaration("1.0", "utf-8", null);
                doc.AppendChild(dec);
    
                //4.创建根节点
                XmlElement siemens = doc.CreateElement("Siemens");
                doc.AppendChild(siemens);
                
    
                //5.给根节点books创建子节点
                XmlElement opcua = doc.CreateElement("OPCUA");
                siemens.AppendChild(opcua);
    
                //6.给book1添加子节点
                XmlElement plc1 = doc.CreateElement("PLC1");
                plc1.InnerText = "_84303";
                opcua.AppendChild(plc1);
    
                XmlElement plc2 = doc.CreateElement("PLC2");
                plc2.InnerText = "_87303";
                opcua.AppendChild(plc2);
    
                XmlElement plc3 = doc.CreateElement("PLC3");
                plc3.InnerText = "_89303";
                opcua.AppendChild(plc3);
    
                XmlElement plc4 = doc.CreateElement("PLC4");
                plc4.InnerXml = "<a>我就发而非</a>";
                opcua.AppendChild(plc4);
    
                XmlElement plc4_1 = doc.CreateElement("年级");
                plc4_1.SetAttribute("名字","小明");
                plc4_1.InnerXml = "学前班";
                plc4.AppendChild(plc4_1);
                doc.Save("Siemens.xml");

     

     XmlDocument doc2 = new XmlDocument();
                XmlDeclaration des2 = doc2.CreateXmlDeclaration("1.0","utf-8",null);
                doc2.AppendChild(des2);
    
                XmlElement person = doc2.CreateElement("Person");
                doc2.AppendChild(person);
    
                for(int i=0;i<lstudent.Count;i++)
                {
                    XmlElement student = doc2.CreateElement("Studemt");
                    student.SetAttribute("ID",lstudent[i].id.ToString());
                    XmlElement name = doc2.CreateElement("Name");
                    name.InnerXml = lstudent[i].name;
                    XmlElement age = doc2.CreateElement("Age");
                    age.InnerXml = lstudent[i].age.ToString();
                    XmlElement gender = doc2.CreateElement("Gender");
                    gender.InnerXml = lstudent[i].gender.ToString();
    
                    person.AppendChild(student);
                    student.AppendChild(name);
                    student.AppendChild(age);
                    student.AppendChild(gender);
                }
    
                doc2.Save("student.xml");

    四.XML文件的读取:

    xml文件内容:

    <?xml version="1.0" encoding="utf-8"?>
    <library id="30">
      <BOOK id="20">
        <name>高等数学</name>
        <name1>大学英语</name1>
      </BOOK>
    </library>

    读取XML内容:

    static void Main(string[] args)
     {
         //将XML文件加载进来
         XDocument document = XDocument.Load("D:\123.xml");
         //获取到XML的根元素进行操作
         XElement root= document.Root;
         XElement ele= root.Element("BOOK");
         //获取name标签的值
         XElement shuxing= ele.Element("name");
         Console.WriteLine(shuxing.Value);
         //获取根元素下的所有子元素
         IEnumerable<XElement> enumerable = root.Elements();
         foreach (XElement item in enumerable)
         {
             foreach (XElement item1 in item.Elements())
             {
                 Console.WriteLine(item1.Name);   //输出 name  name1            
             }
             Console.WriteLine(item.Attribute("id").Value);  //输出20
         }   
         Console.ReadKey();
     }

    五、增删改查

      #region 增删改查
                XmlDocument doc3 = new XmlDocument();
                if(File.Exists("student.xml"))
                {
                    //存在
                    //加载文件
                    doc3.Load("student.xml");
                    //追加,先要拿到根节点
                    XmlElement Person = doc3.DocumentElement;
                    #region 增加
                    ////追加子节点
                    //XmlElement student = doc3.CreateElement("Student");
                    //student.SetAttribute("ID","5");
                    //Person.AppendChild(student);
                    //XmlElement ignore = doc3.CreateElement(".....");
                    //student.AppendChild(ignore);
                    #endregion
                    #region 改查
                    //改查1--获取子节点的方法
                    //XmlNodeList ndoes = Person.ChildNodes;
                    //foreach(XmlNode xnode in ndoes)
                    //{
                    //    //不包含属性 
                    //    Console.WriteLine(xnode.InnerText);
                    //    //属性信息
                    //    Console.WriteLine(xnode.Attributes["ID"].Value);
                    //    if(xnode.Attributes["ID"].Value=="3")
                    //    {
                    //        xnode.Attributes["ID"].Value = "改";
                    //    }
                    //}
                    //改查2---xmlpath的方法
                    XmlNode node = Person.SelectSingleNode("/Person/Student");
                    Console.WriteLine(node.InnerText);
    
                    //直接找某一个子节点
                    XmlNode node1 = Person.SelectSingleNode("/Person/Student[@ID='2']/Gender");
                    node1.InnerText = "不男不女";
                    Console.WriteLine(node1.InnerText);               
                    Console.ReadKey();
                    #endregion 改查
                    #region 删除
                    //根节点不能删除
                   // doc3.RemoveAll();
                    
                    //移除的节点必须是操作节点的子集
                    XmlNode node2 = Person.SelectSingleNode("/Person/Student[@ID='2']/Gender");
                    //Person.RemoveChild(node2);
                    XmlNode nodep = Person.SelectSingleNode("/Person/Student[@ID='2']/");
                    nodep.RemoveChild(node2);
    
                    //移除属性
                    nodep.Attributes.RemoveNamedItem("ID");
                    #endregion
    
                }
                else
                {
                    //不存在
                    XmlDeclaration des3 = doc3.CreateXmlDeclaration("1.0", "utf-8", null);
                    doc3.AppendChild(des3);
                    //添加根节点
                    XmlElement person3 = doc3.CreateElement("Person");
                    doc3.AppendChild(person3);
    
                }
    
                doc3.Save("student.xml");
                #endregion
  • 相关阅读:
    K8s--09 编写mysql的持久化deployment
    K8s--08 prometheus监控
    K8s--07 configMap资源
    K8s--06 K8s数据持久化
    k8S--05 K8s控制器类型
    k8s--04 部署harbor作为k8s镜像仓库
    K8s--03 资源类型
    K8s--02 K8S部署
    K8s--01 Kubernetes简介
    video2gift环境安装(Theano等)
  • 原文地址:https://www.cnblogs.com/janghe/p/7677554.html
Copyright © 2020-2023  润新知