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.
<?xml version="1.0" encoding="utf-8" ?>
<StudentsInformation>
<GeneralInformation>
<UniversityName>XYZ University</UniversityName>
<Department>IT</Department>
</GeneralInformation>
<Studentlist>
<Student id="1" enrollment="4/30/2005">Suraj</Student>
<Student id="2" enrollment="3/4/2006">Depak</Student>
<Student id="3" enrollment="1/20/2011">Jyoti</Student>
<Student id="4" enrollment="1/20/2001" >Deepti</Student>
</Studentlist>
</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: -
namespace XMLParsingExample.Models
{
public class Student
{
public int id { get; set; }
public string name { get; set; }
public string enrollment { get; set; }
}
public class StudentInfo
{
public string University { get; set; }
public string Department { get; set; }
public List<Student> Studentlist { get; set; }
public StudentInfo()
{
University = "N/A";
Department = "N/A";
Studentlist = new List<Student>();
}
}
}
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.
using System;
using System.Web.Mvc;
using XMLParsingExample.Models;
using System.Xml;
namespace XMLParsingExample.Controllers
{
public class HomeController : Controller
{
private static string xmlUrl = @"D:/StudentInfo.xml";
// Parse the XML document using "XMLDocument"
public ActionResult ParsingByXmlDocument()
{
var student = new StudentInfo();
XmlDocument xmldoc = new XmlDocument();
//Load the XML file "xmlUrl" in the XMLDocument
xmldoc.Load(xmlUrl);
XmlNode StuInfoNode = xmldoc.SelectSingleNode("StudentsInformation/GeneralInformation");
student.University = StuInfoNode.SelectSingleNode("UniversityName").InnerText;
student.Department = StuInfoNode.SelectSingleNode("Department").InnerText;
XmlNode StuListNode = xmldoc.SelectSingleNode("StudentsInformation/Studentlist");
XmlNodeList StuNodeList = StuListNode.SelectNodes("Student");
foreach(XmlNode node in StuNodeList)
{
Student stu = new Student();
stu.id = Convert.ToInt16(node.Attributes.GetNamedItem("id").Value);
stu.enrollment = node.Attributes.GetNamedItem("enrollment").Value;
stu.name = node.InnerText;
student.Studentlist.Add(stu);
}
return View("Studentlist", student);
}
// Parse the XML document using "XDocument"
public ActionResult ParseByXDocument()
{
var student = new StudentInfo();
XDocument xdoc = XDocument.Load(xmlUrl); ;
XElement xelement = xdoc.Element("StudentsInformation").Element("GeneralInformation");
student.University = xelement.Element("UniversityName").Value;
student.Department = xelement.Element("Department").Value;
student.Studentlist = (from stu in xdoc.Descendants("Student")
select new Student()
{
id = Convert.ToInt16(stu.Attribute("id").Value),
name = stu.Value,
enrollment = stu.Attribute("enrollment").Value,
}).ToList<Student>();
return View("Studentlist", student);
}
}
}
Görünüm "Öğrenci Listesi", ayrıştırılmış xml'nin geçirildiği yer aşağıdaki gibidir.
@model XMLParsingExample.Models.StudentInfo
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Studentlist</title>
</head>
<body>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.University)
</th>
<th>
@Html.DisplayNameFor(model => model.Department)
</th>
</tr>
<tr>
<td>
@Html.DisplayTextFor(model => model.University)
</td>
<td>
@Html.DisplayTextFor(model => model.Department)
</td>
</tr>
<tr>
<th>
@Html.DisplayName("StudentName")
</th>
<th>
@Html.DisplayName("StudentEnrollment")
</th>
</tr>
@foreach (var item1 in Model.Studentlist)
{
<tr>
<td>
@Html.DisplayTextFor(model => item1.name)
</td>
<td>
@Html.DisplayTextFor(model => item1.enrollment)
</td>
</tr>
}
</table>
</body>
</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
Yorum Gönder
Yorumunuz alınmıştır. İncelenip yayımlanacaktır.