قالب XML ، برای نگهداری و انتقال اطلاعات استفاده می شود. نرم افزارها می توانند اطلاعات شامل رکوردها را در فایل هایی با فرمت XML ذخیره کنند و یا برای انتقال مجموعه ای از رکوردها از فرمت XML استفاده کنند. یکی از فناوری های خیلی پرکاربرد سرویس های وب هستند که برای تبادل پیام ها و اطلاعات از پروتکل SOAP و آن هم از قالب XML استفاده می کند.

برای آشنایی با قالب XML می توانید مطلب “وب سرویس ها از XML برای توصیف و انتقال داده ها استفاده می کنند” را مطالعه کنید.

در این قسمت روش تجزیه و دسترسی به رکوردهای ذخیره شده در یک فایل XML را در زبان سی شارپ آموزش خواهیم داد.

فرض کنید فایل XML بنام books.xml را با محتوای زیر داریم:

<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Steve Jin</author>
<title>VMware VI and vSphere SDK</title>
<genre>Computer</genre>
<price>59.99</price>
<publish_date>2009-09-01</publish_date>
<description>
An in-depth introduction on VMware vSphere SDK and open source vijava API.
</description>
</book>
<book id="bk102">
<author>Steve Jin</author>
<title>TBD</title>
<genre>Computer</genre>
<price>59.99</price>
<publish_date>2015-09-01</publish_date>
<description>
An in-depth introduction on something.
</description>
</book>
</catalog>

قطعه برنامه زیر برای خواندن محتوای این فایل XML از پوشه داکیومنت از روی دیسک و بدست آوردن رکوردهای کتاب ها و اضافه کردن آنها در یک لیست نوشته شده است:

using System;
using System.Collections.Generic;
using System.Xml;
namespace org.doublecloud
{
class XmlParsingDemo
{
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"c:\users\steve\documents\books.xml");
XmlNodeList nodes = doc.DocumentElement.SelectNodes("/catalog/book");
List<Book> books = new List<Book>();
foreach (XmlNode node in nodes)
{
Book book = new Book();
book.author = node.SelectSingleNode("author").InnerText;
book.title = node.SelectSingleNode("title").InnerText;
book.id = node.Attributes["id"].Value;
books.Add(book);
}
System.Console.WriteLine("Total books: " + books.Count);
}
}
class Book
{
public string id;
public string title;
public string author;
}
}