Linq va Xml Xml bilan ishlashning yana bir yondashuvlaridan biri XML da LINQ texnologiyasini qo’llashdir. LINQ ning XML-ga bog’liq bo'lgan barcha funksiyalar tizimi System.Xml.Linq nom maydonida joylashgan. Ushbu nom maydonining asosiy sinflarini ko'rib chiqamiz:
Asosiy sinf XElement bo'lib, u ichki elementlarni olish va ularni boshqarish imkonini beradi. Uning funksiyalari orasida quyidagilarni ko’rib chiqamiz:
Add(): yangi xususiyat yoki elementni qo'shadi
Attributes(): ushbu element uchun xususiyatlar to'plamini qaytaradi
Remove(): ushbu elementni tayanch elementdan olib tashlaydi
RemoveAll(): ushbu elementni barcha voris elementlari va xususiyatlarini olib tashlaydi.
Bironta Xml faylni olamiz:
Apple 40000
Samsung 33000
Fayldagi ma’lumotlarni Consolga chiqaramiz:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Linq;
Mavjud Xml fayli bilan ishlashni boshlash uchun avval uni statik Xdocument.Load() funksiyasi bilan yuklab olishingiz kerak. Bizning misolda XDocument.Load("D://Dasturlash texnologiyasi//D. T.-2 Misollar//phones.xml").
Xml daraxtsimon tarzda qurilgan elementlardan tuzilganligi sababli, elementlarga kirish uchun biz ushbu daraxtning eng yuqorisidan pastga tushishimiz kerak. Shunday qilib, telefon elementlarini olish va ularga kirish uchun avval ildiz elementiga murojaat qilishingiz kerak va u orqali telefon elementlarni chaqiramiz : xdoc.Element("phones").Elements("phone").
Element ("Element nomi") funksiyasi bu nom bilan topilgan birinchi elementni qaytaradi. Element ("Element nomi") funksiyasi xuddi shu nomdagi elementlarning to'plamini qaytaradi. Bunday holda, biz telefon elementlarining to'plamini olamiz va shuning uchun uni siklda tartiblashimiz mumkin. Daraxtdan pastga tushib, biz xususiyatlarni yoki ichki elementlarni olishimiz mumkin, masalan, XElement companyElement = phoneElement.Element("company"); Bitta matnni o'z ichiga olgan oddiy elementlarga qiymat yuklash uchun Value xususiyatidan foydalaniladi: string company = phoneElement.Element("company").Value Linq va Linq-Xml operatorlarini birlashtirib sinf yordamida oddiy misolni ko’ramiz: using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace Linq_Xml
{
class Program
{
class Phone
{
public string Name { get; set; }
public string Price { get; set; }
}
static void Main(string[] args)
{
XDocument xdoc = XDocument.Load("D://Dasturlash texnologiyasi//D. T.-2 Misollar//phones.xml");
var items = from xe in xdoc.Element("phones").Elements("phone")
where xe.Element("company").Value == "Samsung"
select new Phone
{
Name = xe.Attribute("name").Value,
Price = xe.Element("price").Value
};
foreach (var item in items)
Console.WriteLine($"{item.Name} - {item.Price}");
}
}
}