美文网首页
17.03.13 .Net基础(四)

17.03.13 .Net基础(四)

作者: CH小猫 | 来源:发表于2017-03-14 08:40 被阅读11次
    XML
    创建XML文档
    // 1.创建一个XML文档对象
    XmlDocument doc = new XmlDocument();
    // 2.创建第一行描述信息
    XmlDeclaration dec = doc.CreateXmlDeclaration("1.0","utf-8",null);
    // 3.将创建的第一行数据添加到文档中
    doc.AppendChild(dec);
    // 4.给文档添加根节点
    XmlElement book = doc.CreateElent("Books");
    // 5.将根节点添加给文档对象
    doc.AppendChild(book);
    // 6.给根节点添加子节点
    XmlElement book1 = doc.CreateElent("Book");
    // 将子节点book1添加到根节点下
    books.AppendChild(book1);
    // 7.给book1添加子节点
    XmlElement bookName1 = doc.CreateElement("BookName");
    // 8.设置标签中显示的文本
    bookName1.InnerText = "水浒传";
    book1.AppendChild(bookName1);
    
    DOM方式创建XML文档对象
    XmlDocument doc = new XmlDocument();
    XmlDeclaration dec = doc.CreateXmlDeclaration("1.0","utf-8",null);
    doc.AppendChild(dec);
    XmlElement order= doc.CreateElent("Order");
    doc.AppendChild(order);
    XmlElement customerName= doc.CreateElent("CustomerName");
    customerName.InnerXml = "小猫";
    // 添加节点的属性
    customerName.setAttribute("ID","0101");
    order.AppendChild(customerName);
    
    文档对象模型
    List<Student> list = new List<Student>();
    list.Add(new Student() { ID = 1, Name = "小猫", Age="30" });
    XmlDocument doc = new XmlDocument();
    XmlDeclaration dec = doc.CreateXmlDeclaration("1.0","utf-8",null);
    doc.AppendChild(dec);
    XmlElement person= doc.CreateElent("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();
      person.AppendChild(student);
      student.AppendChild(name);
      student.AppendChild(age);
    }
    
    XML文档的增删改查
    • xml文档追加
    XmlDocument doc  = new XmlDocument();
    if(File.Exists("Student.xml"))
    {
      //加载文件
      doc.Load("Student.xml");
      //获得根节点
      XmlElement person = doc.DocumentElement;
    }
    else
    {
      //不存在
      XmlDeclaration dec = doc.CreateXmlDeclaration("1.0","utf-8",null);
      doc.AppendChild(dec);
      XmlElement order= doc.CreateElent("Order");
      doc.AppendChild(order);
    }
    
    • 读取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);
    }
    
    使用XPath的方式来读取XML文件
    XmlDocument doc  = new XmlDocument();
    doc.Load("order.xml");
    // 获得根节点
    XmlElement order = doc.DocumentElement;
    XmlNode xn = order.SelectSingleNode("/Order/CustomerName[@Name='雨衣']");
    
    委托
    public delegate string DelProStr(string str);
    static void ProString(string[] names,DelProStr del)
    {
      for(int i = 0; i < names.Lenght; i++)
      {
        names[i] = names[i].ToLower();
      }
    }
    
    ProString(names, (name) => { return name.ToUpper(); });
    
    泛式委托
    static T GetMax<T> (T[] nums, DelCompare<T> del)
    {
      T max = nums[0];
      for(int i = 0; i < nums.Length; i++)
      {
        if(del(max, nums[i]) < 0)
        {
          max = nums[i];
        }
      }
      return max;
    }
    
    多播委托
    public delegate void DelTest();
    DelTest del = Test1;
    del += Test2;
    del += Test3;
    del += Test4;
    del -= Test2;
    del();
    
    static void Test1(){}
    static void Test2(){}
    static void Test3(){}
    static void Test4(){}
    
    定义事件
    • 语法:访问修饰符 event 委托名称 事件名称;
    • 定义事件
      public delegate void delTest;
      public event delTest eventTest;
    • 注册事件
      eventTest += new delTest(method1);
      eventTest += new delTest(method2);
    委托与事件总结
    • 委托的作用:占位,在不知道将来要执行的方法的具体代码时,可以先用委托变量来代替方法调用(委托的返回值,参数列表要确定).在实际调用之前,需要为委托赋值,否则为null.
    • 事件的作用:事件的作用与委托变量一样,只是功能上比委托变量有更多的限制.(比如:1.只能通过+=或-=来绑定方法(事件处理程序) 2.只能在类内部调用(触发)事件)

    相关文章

      网友评论

          本文标题:17.03.13 .Net基础(四)

          本文链接:https://www.haomeiwen.com/subject/uckfnttx.html