description |
---|
Nodirbek Abdulaxadov |
XML (eXtensible Markup Language) - kengaytirilgan markerlash tili degan ma'noni anglatadi va SGML (Standard Generalized Markup Language) standart umumlashtirilgan markerlash tilidan olingan matnga asoslangan markerlash tilidir.
{% hint style="success" %} XML teglari HTML teglari kabi ma'lumotlarni ko'rsatish uchun ishlatilmaydi. Aksincha, XML - ma'lumotlarni saqlash va tartibga solish uchun ishlatiladi. Yaqin kelajakda XML HTML o'rnini bosmaydi, lekin u HTML ning ko'plab muvaffaqiyatli xususiyatlarini qo'llash orqali yangi imkoniyatlarni ochib beradi. {% endhint %}
XML hujjatlar bilan ishlash uchun C# dasturlash tilida System.Xml nomlar fazosidagi asosan quyidagi sinflardan foydalaniladi:
- XmlDocument
- XmlConvert
- XmlNode
- XmlNodeList
- XmlScheme
- XmlReader
- XmlTextReader
- XmlWriter
- XmlTextWriter
Keling endi gapni cho'zmasdan amaliyotga o'tamiz. Quyida biz XML hujjat hosil qilishning bir nechta usullarini ko'rib chiqamiz.
Jarayonda biz Talaba modelidan tuzilgan Talabalar jadvalidan foydalanamiz:
public class Talaba
{
public int Id { get; set; }
public string Ism { get; set; }
public string Familiya { get; set; }
public string TelNomer { get; set; }
}
1. XmlDocument va XmlNode sinflari yordamida:
XmlDocument sinfidan yangi obyekt hosil qilamiz:
XmlDocument document = new XmlDocument();
XmlNode sinfi orqali Xml hujjat parametrlarini hosil qilamiz va uni AppendChild metodi yordamida document ga qo'shamiz:
XmlNode xnode = document.CreateXmlDeclaration("1.0", "UTF-8", null);
document.AppendChild(xnode);
{% hint style="info" %}Xml da yangi element hosil qilish XmlNode sinfining CreateElement metodi, elementga qiymat berish uchun esa CreateTextNode metodidan foydalanamiz.{% endhint %}
Talabalar nomli bosh elementni yaratamiz va uni documentga qo'shamiz:
XmlNode talabalar = document.CreateElement("Talabar");
document.AppendChild(talabalar);
Endi Talaba modelining xususiyatlarini element shaklida tashkil qilgan Talaba nomli element hosil qilamiz:
XmlNode talaba = document.CreateElement("Talaba");
talabalar.AppendChild(talaba);
XmlNode id = document.CreateElement("Id");
id.AppendChild(document.CreateTextNode("1"));
talaba.AppendChild(id);
XmlNode ism = document.CreateElement("Ism");
ism.AppendChild(document.CreateTextNode("Nodirbek"));
talaba.AppendChild(ism);
XmlNode familiya = document.CreateElement("Familiya");
familiya.AppendChild(document.CreateTextNode("Abdulaxadov"));
talaba.AppendChild(familiya);
XmlNode nomer = document.CreateElement("TelNomer");
nomer.AppendChild(document.CreateTextNode("+998901234567"));
talaba.AppendChild(nomer);
Yaratgan Xml hujjatimizni saqlaymiz:
document.Save("Talabalar.xml");
Natijamiz:
2. XmlWriter sinfi yordamida:
{% hint style="info" %} XmlWriter sinfining metodlari:
- Create - Yangi hujjat obyektini yaratish
- WriteStartDocument - Yangi hujjat yozishni boshlash
- WriteStartElement - Yangi element ochish
- WriteValue - Element qiymatini kiritish
- WriteEndElement - elementni yopish
- WriteEndDocument - hujjatni yopish
- Flush - hujjatni saqlash {% endhint %}
XmlWriter sinfining metodlaridan va yuqoridagi model va ketma-ketlikdan foydalanib yangi Talabalar.xml nomli hujjat hosil qilamiz.
XmlWriter sinfidan yangi obyekt hosil qilish uchun dastlab uning sozlamalarini hosil qilish kerak bo'ladi:
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter obyektini Talabalar.xml fayli nomi va yuqoridagi settings bilan hosil qilamiz:
XmlWriter writer = XmlWriter.Create("Talabalar.xml", settings);
Talaba modelining xususiyatlarini kiritib, hujjatimizni hosil qilamiz:
writer.WriteStartDocument();
writer.WriteStartElement("Talabalar");
writer.WriteStartElement("Talaba");
writer.WriteStartElement("Id");
writer.WriteValue("1");
writer.WriteEndElement();
writer.WriteStartElement("Ism");
writer.WriteValue("Baxtiyor");
writer.WriteEndElement();
writer.WriteStartElement("Familiya");
writer.WriteValue("Murodov");
writer.WriteEndElement();
writer.WriteStartElement("TelNomer");
writer.WriteValue("+998901234567");
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
3. XML hujjat hosil qilish uchun C# dasturlash tilida System.Xml.Linq nomlar fazosidagi XElement sinfidan ham foydalansak bo'ladi:
Va nihoyat men yoqtirgan usulga ham yetib keldik 😄!
{% hint style="success" %} XElement sinfi yordamida XML hujjat hosil qilish birmuncha oson va tushunarli. Har bir element va uning ichidagi elementlar shajaraga o'xshab joylashadi. {% endhint %}
XElement talabalar =
new XElement("Talabalar",
new XElement("Talaba",
new XElement("Id", "1"),
new XElement("Ism", "Baxtiyor"),
new XElement("Familiya", "Murodov"),
new XElement("Tel_nomer", "+998901234567")));
talabalar.Save("Talabalar.xml");
4. XML hujjatni JSON fayllar kabi Serialize qilish orqali ham yaratishimiz mumkin. Buning uchun bizga System.Xml.Serialization nomlar fazosidagi sinflar kerak bo'ladi.
Dastlab Talaba modelimizga [Serializable] attributini qo'shishimiz kerak bo'ladi:
[Serializable]
public class Talaba
{
public int Id { get; set; }
public string Ism { get; set; }
public string Familiya { get; set; }
public string TelNomer { get; set; }
}
Yangi Talaba obyektini xususiyatlari bilan yaratamiz va Talabalar listiga qo'shamiz:
Talaba talaba = new Talaba
{
Id = 1,
Ism = "Baxtiyor",
Familiya = "Murodov",
TelNomer = "+998901234567"
};
List<Talaba> talabalar = new List<Talaba>();
talabalar.Add(talaba);
Obyektimizni serialize qilamiz va TextWriter yordamida Talabalar.xml nomi bilan saqlaymiz:
XmlSerializer serializer = new XmlSerializer(typeof(List<Talaba>));
TextWriter twriter = new StreamWriter("Talabalar.xml");
serializer.Serialize(twriter, talabalar);
twriter.Close();
Natijamiz:
Qachondir davomi bor yana ;)