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