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的理解。

原文地址:https://www.cnblogs.com/zyqBlog/p/4474732.html