ASP.NET MVC: XML Belgelerini XMLDocument ve XDocument ile Ayrıştırma

 XML Belgelerini XMLDocument ve XDocument ile Ayrıştırma

 

Doğrudan xml belgeleri üzerinde çalışmak yaygın bir uygulama değildir. ASP.NET MVC'de ham XML belgesi mevcut olduğunda, bunları kullanmak için ayrıştırma gereklidir. XML belgelerini ayrıştırmak için .Net, "XMLDocument" ve "XDocument" olmak üzere iki yardımcı program sınıfı sağlar. 

LINQ to XML, nitelikler, öğeler vb. eklemek için XDocument'i kullanırken, XMLDocument aynı şey için LINQ to XML sağlamaz.

 

Aşağıda "D:/StudentInfo.xml" konumunda "StudentInfo.xml" adlı xml dosyası bulunmaktadır. 

 

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <StudentsInformation>
  3. <GeneralInformation>
  4. <UniversityName>XYZ University</UniversityName>
  5. <Department>IT</Department>
  6. </GeneralInformation>
  7. <Studentlist>
  8. <Student id="1" enrollment="4/30/2005">Suraj</Student>
  9. <Student id="2" enrollment="3/4/2006">Depak</Student>
  10. <Student id="3" enrollment="1/20/2011">Jyoti</Student>
  11. <Student id="4" enrollment="1/20/2001" >Deepti</Student>
  12. </Studentlist>
  13. </StudentsInformation>

 

Yukarıdaki xml belgesini ayrıştırmak için aşağıdaki adımlar izlenmelidir.

 

Adım 1: Visual Studio 2015 ve üzerinde bir mvc projesi oluşturun.

 

Adım 2: Modeller klasöründe aşağıdaki sınıfları oluşturun: -

 

  1. namespace XMLParsingExample.Models
  2. {
  3. public class Student
  4. {
  5. public int id { get; set; }
  6. public string name { get; set; }
  7. public string enrollment { get; set; }
  8. }
  9. public class StudentInfo
  10. {
  11. public string University { get; set; }
  12. public string Department { get; set; }
  13. public List<Student> Studentlist { get; set; }
  14. public StudentInfo()
  15. {
  16. University = "N/A";
  17. Department = "N/A";
  18. Studentlist = new List<Student>();
  19. }
  20. }
  21. }

 

Yukarıda tanımlanan sınıflarda bilgiler "StudentInfo.xml" ile ilgilidir.

 

Adım 3: "ParsingByXmlDocument" ve "ParseByXDocument" eylem yöntemleriyle "Home" adında bir controller oluşturun.

 

  1. using System;
  2. using System.Web.Mvc;
  3. using XMLParsingExample.Models;
  4. using System.Xml;
  5. namespace XMLParsingExample.Controllers
  6. {
  7. public class HomeController : Controller
  8. {
  9. private static string xmlUrl = @"D:/StudentInfo.xml";
  10.         
  11. // Parse the XML document using "XMLDocument"
  12.          public ActionResult ParsingByXmlDocument()
  13. {
  14. var student = new StudentInfo();
  15. XmlDocument xmldoc = new XmlDocument();
  16.             
  17.             //Load the XML file "xmlUrl" in the XMLDocument
  18. xmldoc.Load(xmlUrl);
  19. XmlNode StuInfoNode = xmldoc.SelectSingleNode("StudentsInformation/GeneralInformation");
  20. student.University = StuInfoNode.SelectSingleNode("UniversityName").InnerText;
  21. student.Department = StuInfoNode.SelectSingleNode("Department").InnerText;
  22. XmlNode StuListNode = xmldoc.SelectSingleNode("StudentsInformation/Studentlist");
  23. XmlNodeList StuNodeList = StuListNode.SelectNodes("Student");
  24. foreach(XmlNode node in StuNodeList)
  25. {
  26. Student stu = new Student();
  27. stu.id = Convert.ToInt16(node.Attributes.GetNamedItem("id").Value);
  28. stu.enrollment = node.Attributes.GetNamedItem("enrollment").Value;
  29. stu.name = node.InnerText;
  30. student.Studentlist.Add(stu);
  31. }
  32. return View("Studentlist", student);
  33. }
  34. // Parse the XML document using "XDocument"
  35. public ActionResult ParseByXDocument()
  36. {
  37. var student = new StudentInfo();
  38. XDocument xdoc = XDocument.Load(xmlUrl); ;
  39. XElement xelement = xdoc.Element("StudentsInformation").Element("GeneralInformation");
  40. student.University = xelement.Element("UniversityName").Value;
  41. student.Department = xelement.Element("Department").Value;
  42. student.Studentlist = (from stu in xdoc.Descendants("Student")
  43. select new Student()
  44. {
  45. id = Convert.ToInt16(stu.Attribute("id").Value),
  46. name = stu.Value,
  47. enrollment = stu.Attribute("enrollment").Value,
  48. }).ToList<Student>();
  49. return View("Studentlist", student);
  50. }
  51.         
  52.     }
  53. }    

 

Görünüm "Öğrenci Listesi", ayrıştırılmış xml'nin geçirildiği yer aşağıdaki gibidir.

 

  1. @model XMLParsingExample.Models.StudentInfo
  2. @{
  3. Layout = null;
  4. }
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta name="viewport" content="width=device-width" />
  9. <title>Studentlist</title>
  10. </head>
  11. <body>
  12. <table class="table">
  13. <tr>
  14. <th>
  15. @Html.DisplayNameFor(model => model.University)
  16. </th>
  17. <th>
  18. @Html.DisplayNameFor(model => model.Department)
  19. </th>
  20. </tr>
  21. <tr>
  22. <td>
  23. @Html.DisplayTextFor(model => model.University)
  24. </td>
  25. <td>
  26. @Html.DisplayTextFor(model => model.Department)
  27. </td>
  28. </tr>
  29. <tr>
  30. <th>
  31. @Html.DisplayName("StudentName")
  32. </th>
  33. <th>
  34. @Html.DisplayName("StudentEnrollment")
  35. </th>
  36. </tr>
  37. @foreach (var item1 in Model.Studentlist)
  38. {
  39. <tr>
  40. <td>
  41. @Html.DisplayTextFor(model => item1.name)
  42. </td>
  43. <td>
  44. @Html.DisplayTextFor(model => item1.enrollment)
  45. </td>
  46. </tr>
  47. }
  48. </table>
  49. </body>
  50. </html>

 

Proje "Home/ParsingByXmlDocument" veya "Home/ParseByXDocument" url'si ile çalıştığında, asp.net mvc'de xml belgesini ayrıştırmanın yalnızca iki yöntemi olduğundan çıktılar aynı kalır.

 

Çıktı :

 

Yorumlar

Bu blogdaki popüler yayınlar

Asp.Net ile Uyarı Mesajları Vermek (msgbox)

Asp.Net Eval Kullanımı

Asp.Net ile T.C. Kimlik Doğrulama (Mernis) Web Service ile