• c#学习笔记之XML


    XML(eXtensible Markup Language)可扩展性标记语言,可扩展性标记语言可以对文档和数据进行结构化处理,从而能够在部门、客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发。可扩展性标记语言可以使我们能够更准确的搜索,更方便的传送软件组件,更好的描述一些事物。

    什么是可扩展性标记语言,我从网上找了一些解释:

    • 可扩展标记语言是一种很像超文本标记语言的标记语言。
    • 它的设计宗旨是传输数据,而不是显示数据。
    • 它的标签没有被预定义。您需要自行定义标签。
    • 它被设计为具有自我描述性。
    • 它是W3C的推荐标准

    xml中一个元素的定义:

    <FirstName>Orlando</FirstName>

    其中<FirstName>是元素的开始标签,</FirstName>是元素的结束标签。

    xml中的元素可以有一个或者多个子元素,但是每一个元素必须有一个父元素。有同一个父元素的元素成为兄弟元素。

    下面一段代码,有一个Customer元素,其中包括FirstName,LastName,EmailAddress三个兄弟元素。

    <Customer>
      <FirstName>Orlando</FirstName>
      <LastName>Gee</LastName>
      <EmailAddress>orlando0@hotmail.com</EmailAddress>
    </Customer>

    下面的例子都是基于Customer来实现的。

    一、创建一个xml文件的例子

    XmlDocument customerXml = new XmlDocument();//创建一个xml

    XmlElement rootElem = customerXml.CreateElement("Customers");
    customerXml.AppendChild(rootElem);//把根元素加入到xml中

    XmlElement firstNameElem = customerXml.CreateElement("FirstName");
    firstNameElem.InnerText  = customer.FirstName;
    customerElem.AppendChild(firstNameElem);//把子元素加入到xml中

    实例如下:

    List<Customer> customers = CreateCustomerList();//创建一个customer的list
    XmlDocument customerXml = new XmlDocument();
      XmlElement rootElem = customerXml.CreateElement("Customers");
      customerXml.AppendChild(rootElem);//加入根元素
    
      foreach (Customer customer in customers)
      {
      // 创建一个新的元素表达customer类
      XmlElement customerElem = customerXml.CreateElement("Customer");
     
      // 把第一个元素FirstName加入到其中
      XmlElement firstNameElem = customerXml.CreateElement("FirstName");
      firstNameElem.InnerText  = customer.FirstName;
      customerElem.AppendChild(firstNameElem);
     // 把LastName加入到其中
      XmlElement lastNameElem = customerXml.CreateElement("LastName");
      lastNameElem.InnerText = customer.LastName;
      customerElem.AppendChild(lastNameElem);
    
     // 把Email地址加入到其中
      XmlElement emailAddress = customerXml.CreateElement("EmailAddress");
      emailAddress.InnerText = customer.EmailAddress;
      customerElem.AppendChild(emailAddress);
    
      //最后把customer元素加入到XML文件中
    rootElem.AppendChild(customerElem); } Console.WriteLine(customerXml.OuterXml); Console.Read();

    输出结果:

    Output:
    <Customers>
      <Customer>
        <FirstName>Orlando</FirstName>
        <LastName>Gee</LastName>
        <EmailAddress>orlando0@hotmail.com</EmailAddress>
      </Customer>
      <Customer>
        <FirstName>Keith</FirstName>
        <LastName>Harris</LastName>
        <EmailAddress>keith0@hotmail.com</EmailAddress>
      </Customer>
       <> ….</>
    </Customers>


    二、把元素特征加入到xml文件中,加入到其中就像这样

    <Customer FirstName="Orlando" LastName="Gee">
      <EmailAddress>…</EmailAddress>
    </Customer>

    代码如下:

    // Add an attribute :FirstName property  to the customer element.
    XmlAttribute firstNameAttr = customerXml.CreateAttribute("FirstName");
    firstNameAttr.Value = customer.FirstName;
    customerElem.Attributes.Append(firstNameAttr);

    在xml中寻找元素:

    string xPath = "/Customers/Customer[@FirstName='Donna']";//寻找customer下名字为Donna的信息
    XmlNode oneCustomer = customerXml.SelectSingleNode(xPath);

    本例中搜索从根节点开始,直到搜索到名为Donna的人。

    另一种方法为不知道路径具体为什么,所用方法为:

    xPath = "descendant::Customer[@FirstName='Donna']";
    oneCustomer = customerXml.SelectSingleNode(xPath);

    其中:descendant表示搜索所在位置后的所有符合条件的后代,即子结点。

    xml的用法还有很多,以后会随着需要的增多具体增加对xml的理解。

  • 相关阅读:
    Beta 第七天
    Beta 第六天
    Beta 第五天
    Beta 第四天
    Beta 第三天
    Beta 第二天
    Beta 凡事预则立
    Beta 第一天
    Beta 集合
    打造专属测试平台5-使用Docker部署MySQL数据库
  • 原文地址:https://www.cnblogs.com/zyqBlog/p/4474732.html
Copyright © 2020-2023  润新知