亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C# LINQ to XML應用介紹

2020-01-24 03:39:08
字體:
來源:轉載
供稿:網友
W3C制定了XML DOM標準,.Net為了支持W3C的標準,從1.1版本開始就引入了XmlDocument類。我在前一篇博客中,介紹了如何使用XmlDocument類來對XML文檔進行操作。后來 .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" && (string)customer.Attribute("city") == "Amsterdam"
select customer.Value).FirstOrDefault();
Console.WriteLine(result);

輸出結果:
Shell
3. 查找出 order ID 1003的customer ID和它的freight:
復制代碼 代碼如下:

var result = (from order in doc1.Descendants("Order")
where order.Attribute("OrderID").Value == "1003"
select new
{
CustomerID = order.Parent.Attribute("id").Value,
Freight = (decimal)order.Attribute("Freight")
}).FirstOrDefault();
Console.WriteLine(string.Format("Customer ID: {0} Freight: {1}", result.CustomerID, result.Freight));

輸出結果:
Customer ID: 01 Freight: 61.50
4. 查詢每個客戶的freight的總和
復制代碼 代碼如下:

var result = from customer in doc1.Descendants("Customer")
select new
{
CustomerName = customer.Value,
TotalFreight = customer.Descendants("Order").Sum(o => (decimal)o.Attribute("Freight"))
};
foreach (var r in result)
{
Console.WriteLine(string.Format("Customer: {0} Total Freight: {1}", r.CustomerName, r.TotalFreight));
}

輸出結果:
Customer: Lenovo Total Freight: 97.50
Customer: Shell Total Freight: 222.65
5. 使用LINQ to XML Join
Join可以用在LINQ to XML和其他的LINQ providers,比如說LINQ to Objects。下面的代碼展示了如何將一個數組和一個XML文件Join起來。
復制代碼 代碼如下:

string[] orders = {"1001", "2000", "1002"};
var result = from order in doc1.Descendants("Order")
join selected in orders
on (string)order.Attribute("OrderID") equals selected
select new
{
CustomerName = order.Parent.Value,
OrderID = selected,
Freight = (decimal)(order.Attribute("Freight"))
};
foreach (var r in result)
{
Console.WriteLine(string.Format("Customer ID: {0} Order:{1} Freight: {2}", r.CustomerName, r.OrderID, r.Freight));
}

輸出結果:
Customer ID: Lenovo Order:1001 Freight: 36,00
Customer ID: Shell Order:1002 Freight: 56,65
(三) 創建
以創建以下XML文檔為例:
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<Customers>
<Customer id="01" city="Beijing" country="China" name="Lenovo">
<Order OrderID="1001" Freight="36.00" />
</Customer>
</Customers>

復制代碼 代碼如下:

var doc = new XDocument(
new XElement("Customers",
new XElement("Customer",
new XAttribute("id", "01"),
new XAttribute("city", "Beijing"),
new XAttribute("country", "China"),
new XAttribute("name", "Lenovo"),
new XElement("Order",
new XAttribute("OrderID", "1001"),
new XAttribute("Freight", "36.00")
)
)
)
);
doc.Save("test.xml");

總結:
1. XDocument提供了對XML文檔在內存中的隨機的讀寫操作。
2. XDocument使用LINQ to XML來讀取XML結點。
3. 你可以通過LINQ投射(projection)來將XML變換為Object。
4. LINQ投射可以將XML變換為IEnumerable<String>。
5. LINQ投射可以將XML變換為其他格式的XML。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲女人天堂网| 国模吧一区二区三区| 伊人久久久久久久久久久| 日韩av电影国产| 欧美成年人视频网站欧美| 91中文字幕一区| 久久久精品一区二区三区| 成人午夜激情网| 一区二区三区回区在观看免费视频| 欧美视频专区一二在线观看| 91精品国产综合久久香蕉的用户体验| 亚洲xxx自由成熟| 欧美福利在线观看| 国内精久久久久久久久久人| 91在线视频免费| 欧美在线视频在线播放完整版免费观看| 日韩专区在线播放| 亚洲男人天堂九九视频| 日韩av手机在线看| 成人免费自拍视频| 91在线免费观看网站| 国产成人精品日本亚洲| 91沈先生在线观看| 国产网站欧美日韩免费精品在线观看| 欧美在线观看网站| 日韩女优在线播放| 成人免费看黄网站| 久久亚洲精品小早川怜子66| 亚洲无亚洲人成网站77777| 国产精自产拍久久久久久蜜| 欧美激情videoshd| 91九色在线视频| 91啪国产在线| 亚洲电影免费观看高清完整版在线| 亚洲成人免费网站| 亚洲的天堂在线中文字幕| 精品久久久久久亚洲国产300| 一本一本久久a久久精品综合小说| 国产精品日日做人人爱| 国产精品久久久久久久久久久久久久| 97视频在线免费观看| 国产色视频一区| 欧美日韩国产一区在线| 亚洲肉体裸体xxxx137| 国产精品高潮呻吟久久av无限| 欧美性猛交xxxx富婆| 色综合久久精品亚洲国产| 亚洲欧美中文在线视频| 国外成人在线视频| 丝袜美腿亚洲一区二区| 亚洲精品福利在线| 国产精品久久久久av免费| 久久深夜福利免费观看| 国产精品美乳在线观看| 国语自产精品视频在免费| 国产成人精彩在线视频九色| 久久九九免费视频| 国产精品老牛影院在线观看| 国产精品扒开腿做爽爽爽男男| 日本国产一区二区三区| 97国产在线视频| 国产精品网站视频| 日韩在线免费视频观看| 中文字幕在线观看亚洲| 日韩成人激情在线| 性色av一区二区三区红粉影视| 久久久国产影院| 韩国福利视频一区| www.99久久热国产日韩欧美.com| 亚洲变态欧美另类捆绑| 91色中文字幕| 久久久成人的性感天堂| 色噜噜国产精品视频一区二区| 精品一区精品二区| 性色av一区二区三区免费| 日韩大片免费观看视频播放| 第一福利永久视频精品| 97在线看福利| 国产精品丝袜高跟| 亚洲精品v欧美精品v日韩精品| 久久精品亚洲一区| 国产精品美女主播在线观看纯欲| 成人女保姆的销魂服务| 亚洲精品欧美极品| 欧美另类99xxxxx| 欧美亚洲视频一区二区| 91高清视频免费观看| 欧美成人精品一区二区| 国产精品第3页| 国模精品视频一区二区| 久久久国产精品一区| 久久天天躁狠狠躁夜夜av| 亚洲精品wwww| 欧美成人第一页| 成人激情视频免费在线| 色噜噜狠狠狠综合曰曰曰| 国自在线精品视频| 欧美日韩精品在线播放| 欧美成aaa人片免费看| 日韩精品视频在线播放| 亚洲欧洲在线观看| 正在播放欧美视频| 日韩欧美黄色动漫| 亚洲成人在线网| 国产狼人综合免费视频| 欧美日韩第一页| 免费不卡欧美自拍视频| 日韩黄色在线免费观看| 国内精品久久久久影院 日本资源| 欧美一级黄色网| 91在线免费观看网站| 欧美亚洲免费电影| 亚洲第一色中文字幕| 亚洲成人中文字幕| 亚洲欧美激情在线视频| 亚洲精品v欧美精品v日韩精品| 亚洲国产美女精品久久久久∴| 久久精品一偷一偷国产| 欧美肥老妇视频| 欧美日韩国产中文字幕| 欧美在线观看www| 一本一本久久a久久精品综合小说| 2019中文字幕在线| 欧美激情奇米色| 搡老女人一区二区三区视频tv| 欧美xxxx综合视频| 国产精品日韩欧美| 日韩中文在线观看| 国产精品私拍pans大尺度在线| 欧美激情久久久久久| 亚洲视频在线观看| 欧美日韩国产中文精品字幕自在自线| 日韩av在线直播| 久久噜噜噜精品国产亚洲综合| 日韩欧美一区二区在线| 久久亚洲精品一区| 欧美日韩一区免费| 亚洲一区二区三| 国产精品爱久久久久久久| 在线丨暗呦小u女国产精品| 久99九色视频在线观看| 97视频在线观看免费高清完整版在线观看| 日韩精品久久久久| 国产精品偷伦一区二区| 亚洲一区二区黄| 久久亚洲精品成人| 日韩av日韩在线观看| 夜夜嗨av色一区二区不卡| 91极品视频在线| 在线视频欧美日韩| 日韩在线国产精品| 亚洲欧洲一区二区三区在线观看| 欧美日韩成人在线播放| 夜夜嗨av色一区二区不卡| 96pao国产成视频永久免费| 欧美另类在线观看| 日韩欧美中文第一页| 欧美肥臀大乳一区二区免费视频| 日韩精品在线第一页| 精品久久久久久久大神国产| 国产丝袜精品第一页| 中文国产成人精品久久一| 国产精品偷伦视频免费观看国产| 97成人精品视频在线观看|