LINQ به XML
نوع دوم LINQ ، LINQ به XML (یا XLINQ) است. همانطور که از نامش پیداست LINQ به XML برای استفاده از LINQ در پرس و های XML می باشد.
مطابق با ساختار LINQ ، ساختار LINQ به XML در دات نت نیز به عنوان یک فرمت اساسی گنجانده شده است و توابع موجود را نمیتوان تغییر داد.
همچنین در هسته مرکزیLINQ ، ساختار LINQ به XML در کتابخانه ی System.Xml.Linq گنجانده شده است.
در این پست و پست های آینده چگونگی استفاده از پرس و جو های LINQ در XML را به شما نشان خواهیم داد. ما از همان داده های قبلی فیلم به عنوان پایه که در پست های قبلی مورد استفاده قرار گرفت استفاده می کنیم اما این بار آن ها را با XML پیاده سازی می کنیم.
مثال 17 تبدیل اطلاعات فیلم را در یک سند XML نشان میدهد.
مثال 17 ایجاد یک فایل XML که حاوی اطلاعات فیلم است.
<?xml version="1.0" encoding="utf-8" ?>
<Movies>
<Movie>
<Title>Shrek</Title>
<Director>Andrew Adamson</Director>
<Genre>0</Genre>
<ReleaseDate>5/16/2001</ReleaseDate>
<RunTime>89</RunTime>
</Movie>
<Movie>
<Title>Fletch</Title>
<Director>Michael Ritchie</Director>
<Genre>0</Genre>
<ReleaseDate>5/31/1985</ReleaseDate>
<RunTime>96</RunTime>
</Movie>
<Movie>
<Title>Casablanca</Title>
<Director>Michael Curtiz</Director>
<Genre>1</Genre>
<ReleaseDate>1/1/1942</ReleaseDate>
<RunTime>102</RunTime>
</Movie>
</Movies>
برای شروع چگونگی استفاده از LINQ به XML در اسناد XML اجازه بدهید که با نمایش اطلاعات فایل XML شروع کنیم. مثال 18 یک پرس و جوی ساده بر روی فایل های XML را با استفاده از LINQ نشان میدهد.
مثال 18 یک پرس و جوی ساده بر روی فایل های XML را با استفاده از LINQ :
کد های HTML
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>My Favorite Movies</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
کد های VB.NET
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim query = From m In XElement.Load(MapPath("Movies.xml")).Elements("Mov ie") _
Select m
Me.GridView1.DataSource = query
Me.GridView1.DataBind()
End Sub
کد های C#
protected void Page_Load(object sender, EventArgs e)
{
var query = from m in XElement.Load(MapPath("Movies.xml")).Elements("Mov ie")
select m;
this.GridView1.DataSource = query;
this.GridView1.DataBind();
}
توجه کنید که در این پرس و جو ، در LINQ به طور مستقیم فایل XML را بارگذاری کرده و عناصر موجود در آن فایل برگردانده می شوند ، که در این مورد همه عناصر فیلم بازیابی می شوند.
تغییر کوچک دیگر که در مثال های قبل دیدید در پرس و جوی LINQ یکسان است.
توجه داشته باشید که در خروجی تمامی تگ ها نمایش داده میشوند. این موضوع به دلیل است که در این پرس و جو از شیء XElement استفاده شده و محتویات عمومی آن را بر میگرداند نه اطلاعات فیلم ها را که انتظار ماست و دلیل آن این است که LINQ به خودی خود هیچ راهی را برای شناسایی نوع داده های اشیاء و برگرداندن آن ندارد. خوشبختانه شما میتوانید نوع داده ها را در پرس و جو مشخص کنید تا مشخص شود که هر گره از چه نوعی است.
این موضوع در مثال بعدی مطرح خواهد شد.





پاسخ با نقل قول
