前言
W3C制定了XML DOM标准,.Net为了支持W3C的标准,从1.1版本开始就引入了XmlDocument类。
自从 formwork 3.5发布后 .Net又引入了LINQ 。
于是LINQ to XML也就应运而生,所以在.Net中,不仅可以用W3C XML DOM标准,还可以使用LINQ to XML来操作XML文档。
下面就来简单介绍一下如何使用LINQ to XML。
(一) 加载
加载XML比较常用的有三种方法:
public static XDocument Load(string uri); public static XDocument Load(Stream stream); public static XDocument Parse(string text);
下面代码演示如何使用它们:
// public static XDocument Load(string uri); // uri 即为要装载的文件名 var doc1 = XDocument.Load("XMLFile1.xml"); // public static XDocument Load(Stream stream); Entity retrievedAnnotation = _orgService.Retrieve("annotation" , new Guid("C1B13C7F-F430-E211-8FA1-984BE1731399"), new ColumnSet(true)); byte[] fileContent = Convert.FromBase64String(retrievedAnnotation["documentbody"].ToString()); MemoryStream ms = new MemoryStream(fileContent); XDocument xDoc = XDocument.Load(ms); // public static XDocument Parse(string text); string str = @"<Customers><Customer id='01' city='Beijing' country='China' name='Lenovo'/></Customers>"; var doc2 = XDocument.Parse(str);
(二) 查询
我们以下面的XML文档为例:
<?xml version="1.0" encoding="utf-8" ?> <Customers> <Customer id="01" city="Beijing" country="China">Lenovo <Order OrderID="1001" Freight="36.00" /> <Order OrderID="1003" Freight="61.50" /> </Customer> <Customer id="02" city="Amsterdam" country="The Netherlands">Shell <Order OrderID="1002" Freight="56.65" /> <Order OrderID="1004" Freight="65.50" /> <Order OrderID="1005" Freight="100.50" /> </Customer> </Customers>
1. 返回所有Customer 节点:
var result = from customer in doc1.Descendants("Customer") select customer.Value; foreach (var s in result) { Console.WriteLine(s); }
输出结果:
Lenovo
Shell
2. 返回id为02并且 city 为 Amsterdam 的customer :
var result = (from customer in doc1.Descendants("Customer") where (string)customer.Attribute("id") == "02