Introduction

This article explains how to read a XML file using the Web API. Here we need to create a XML file and save it in a folder from where the Web API reads the XML and displays the record in the browser. In this tutorial I will create an "Employee.XML" file.

The data of this XML file, when displayed, appears like this:

  1. <?xml version="1.0" ?>
  2. -<documentelement>-
  3. <employee>
  4. <id>1</id>
  5. <cmp_name>MCN Solutions Pvt Ltd</cmp_name>
  6. <address>Noida</address>
  7. </employee>-
  8. <employee>
  9. <id>2</id>
  10. <cmp_name>NIIT Limited</cmp_name>
  11. <address>Gurgao</address>
  12. </employee>-<employee>
  13. <id>3</id>
  14. <cmp_name>Cipla</cmp_name>
  15. <address>Delhi</address>
  16. </employee>-<employee>
  17. <id>4</id>
  18. <cmp_name>Tech Mahindra</cmp_name>
  19. <address>Noida</address>
  20. </employee>
  21. </documentelement>

Step 1

Create the Web API application as in the following:

Step 2

Create a model class:

Add the following code:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. namespace APIApp.Models
  6. {
  7. public class Employee
  8. {
  9. public string ID { get; set; }
  10. public string Cmp_Name { get; set; }
  11. public string Address { get; set; }
  12. }
  13. }

Step 3

Create an API controller:

Add the following code:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Net.Http;
  6. using System.Web.Http;
  7. using APIApp.Models;
  8. using System.Xml.Linq;
  9. namespace APIApp.Controllers
  10. {
  11. public class EmployeeController : ApiController
  12. {
  13. public List<Employee> GetAllEmpoyees()
  14. {
  15. List<Employee> employees = new List<Employee>();
  16. XDocument doc = XDocument.Load("D:\\Mudita\\Employee.xml");
  17. foreach (XElement element in doc.Descendants("DocumentElement")
  18. .Descendants("Employee"))
  19. {
  20. Employee employee = new Employee();
  21. employee.ID = element.Element("ID").Value;
  22. employee.Cmp_Name = element.Element("Cmp_Name").Value;
  23. employee.Address = element.Element ("Address").Value;
  24. employees.Add(employee);
  25. }
  26. return employees;
  27. }
  28. public Employee GetEmployee(int id)
  29. {
  30. Employee employee = new Employee();
  31. XDocument doc = XDocument.Load("D:\\Mudita\\Employee.xml");
  32. XElement element = doc.Element("DocumentElement")
  33. .Elements("Employee").Elements("ID").
  34. SingleOrDefault(x => x.Value == id.ToString());
  35. if (element != null)
  36. {
  37. XElement parent = element.Parent;
  38. employee.ID =
  39. parent.Element("ID").Value;
  40. employee.Cmp_Name =
  41. parent.Element("Cmp_Name").Value;
  42. employee.Address =
  43. parent.Element("Address").Value;
  44. return employee;
  45. }
  46. else
  47. {
  48. throw new HttpResponseException
  49. (new HttpResponseMessage(HttpStatusCode.NotFound));
  50. }
  51. }
  52. }
  53. }

Step 4

Add an Index.cshtml file using the following:

  • In Solution Explorer.

  • Select "Home" -> "Index.cshtml".

    Index file

Add the following code to it:

  1. <div id="body">
  2. <section class="content-wrapper main-content clear-fix">
  3. <div>
  4. <h2>All Employees</h2>
  5. </div>
  6. <div>
  7. <table id="employees" style="border: 1px solid black;"></table>
  8. </div>
  9. </section>
  10. </div>
  11. @section scripts {
  12. <script>
  13. var apiEmployees = 'api/employee';
  14. $(document).ready(function () {
  15. // Send an AJAX request
  16. var rows = '';
  17. $('#employees').empty();
  18. $.getJSON(apiEmployees,
  19. function (data) {
  20. $.each(data, function (key, val) {
  21. var employeeURL = apiEmployees + '/' + val.EmployeeID;
  22. rows = rows + '<tr style="border: 1px solid black;"><td> ' +
  23. '<a style="color: Blue; font-weight:bold; font-size:15px"'
  24. + 'href="' + employeeURL + '">' + val.ID + '</a>' +
  25. '</td><td>' + val.Cmp_Name +
  26. '</td><td>' + val.Address + '</td></tr>';
  27. });
  28. $('#employees').html(rows);
  29. });
  30. });
  31. </script>
  32. }

Step 5

Execute the application:

Record of Employee

Now see the record in XML form.

xml output