- •Огляд сучасних Інтернет - технологій. Технологія asp.Net
- •Серверні елементи керування Label, TextBox, Button, Image, Table
- •Робота з xml
- •Файли перетворення документа
- •Файли визначення схеми документа
- •Клас XmlReader
- •Клас xPathDocument
- •Елемент управління xml
- •Елементи керування для відображення даних (repeater, datalist і datagrid)
- •Створення простої сторінки, що використовує інформацію з бази даних
- •Шаблони дизайну сторінок asp.Net
- •Зміст за замовчуванням
- •Програмне призначення головної сторінки
- •Вкладені майстер-сторінки
- •Послідовність подій
- •Створення структури переходів Web вузла
- •Елемент керування SiteMapPath
- •Програмне керування TreeView
- •Елемент керування Menu
Клас XmlReader
За допомогою класу XmlReader можна швидше, ніж іншими методами, отримати дані з XML-документів.
XmlReader - Це абстрактний клас. Щоб почати читання, в статичний метод Create передається об'єкт класу XmlReaderSettings. Ця функція підраховує число вузлів в документі:
using System.Xml;
using System.IO;
private int CountNodes (string xmlFile)
(
int NodesCount = 0;
XmlReaderSettings settings = new XmlReaderSettings ();
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
using (XmlReader reader = XmlReader.Create (xmlFile, set -
tings))
(
while (reader.Read ())
(
if (reader.NodeType == XmlNodeType.Element)
(
NodesCount + +;
)
)
)
return NodesCount;
)
Клас XmlReader дозволяє витягувати з документа класи CLR. Нехай у нас є меню ресторану:
<? xml version = "1.0"?>
<pizza_menu>
<food name="Піцца Грандіозо">
<price> 450.00 </ price>
<description> Гриби, бекон, салямі, шинка,
баварські сосиски, артишоки,
висушені на сонці помідори,
сир Пармезан </ description>
<calories> 700 </ calories>
</ food>
<food name="Прего піцца">
<price> 306.00 </ price>
<description>
Шматочки ніжною курячої грудинки в соусі Песто,
червоний солодкий перець, гриби,
кукурудза, сир Пармезан
</ description>
<calories> 650 </ calories>
</ food>
<food name="Піцца Маргаріта">
<price> 126.00 </ price>
<description>
Класична італійська піца
подається на вибір з базиліком
або без базиліка
</ description>
<calories> 600 </ calories>
</ food>
</ pizza_menu>
Напишемо функцію, яка порахує суму цін і кількості калорій в меню:
protected void Page_Load (object sender, EventArgs e)
(
int ItemsCount = 0;
decimal DishesTotal = 0;
UInt16 CaloriesTotal = 0;
XmlReaderSettings settings = new XmlReaderSettings ();
settings.IgnoreWhitespace = true;
NameTable nt = new NameTable ();
object food = nt.Add ( "food");
object price = nt.Add ( "price");
object calories = nt.Add ( "calories");
settings.NameTable = nt;
string MenuFile =
Path.Combine (Request.PhysicalApplicationPath, "menu.xml");
using (XmlReader reader = XmlReader.Create (MenuFile, set -
tings))
(
while (reader.Read ())
(
if (reader.NodeType == XmlNodeType.Element & &
food.Equals (reader.LocalName))
(
ItemsCount + +;
)
if (reader.NodeType == XmlNodeType.Element & &
price.Equals (reader.LocalName))
(
DishesTotal + =
(UInt16) reader.ReadElementContentAsDecimal ();
)
if (reader.NodeType == XmlNodeType.Element & &
calories.Equals (reader.LocalName))
(
CaloriesTotal + =
(UInt16) reader.ReadElementContentAsInt ();
)
)
)
Response.Write (String.Format ( "Ви замовили (0) страви на
на (1: C), (2) калорій ",
ItemsCount, DishesTotal, CaloriesTotal));
