Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
web2.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
157 Кб
Скачать
☆

Клас 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));

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]