Главная страница
Навигация по странице:

  • XmlElement title , следующий элемент

  • Выходные данные

  • Таблица

  • МУ_ЛР_ЛиПОАС. Методические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем


    Скачать 2.76 Mb.
    НазваниеМетодические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем
    Дата12.04.2023
    Размер2.76 Mb.
    Формат файлаdoc
    Имя файлаМУ_ЛР_ЛиПОАС.doc
    ТипМетодические указания
    #1057976
    страница14 из 32
    1   ...   10   11   12   13   14   15   16   17   ...   32

    2.14. Сопоставление объектной иерархии с XML-данными


    Когда XML-документ находится в памяти, его концептуальным представлением является дерево. В распоряжении программиста имеется объектная иерархия для доступа к узлам этого дерева. Следующий пример показывает, как XML-содержимое становится узлами.

    При считывании XML в модель DOM, его фрагменты преобразуются в узлы, и эти узлы сохраняют дополнительные метаданные о себе, в частности, тип узла и значения. Тип узла - это его объект и характеристики, определяющие выполняемые действия и свойства, которые можно установить и получить.

    Если имеется следующий простой XML:

    Ввод







    Входные данные представлены в памяти следующим деревом узлов с назначенным свойством типа узлов:


    Представление дерева узлов book и title

    Элемент book становится объектом XmlElementtitle, следующий элемент также становится объектом XmlElement, а элемент content становится объектом XmlText. Методы и свойства объекта XmlElement отличаются от методов и свойств, доступных для объекта XmlText. Поэтому очень важно знать, какой тип узла получает XML, так как тип узла определяет действия, которые можно выполнить.

    В следующих примерах выполняется считывание XML-данных и запись другого текста, в зависимости от типа узла. Использование следующего XML-файла items.xml для получения входных данных.

    Ввод



    ]>



    Test with an entity: &number;

    test with a child element stuff

    test with a CDATA section ]]> def

    Test with a char entity: A

    1234567890ABCD



    Следующий пример кода считывает файл items.xml и отображает сведения о типах узлов.

    C#

    using System;

    using System.IO;

    using System.Xml;

    public class Sample

    {

    private const String filename = "items.xml";

    public static void Main()

    {

    XmlTextReader reader = null;

    try

    {

    // Load the reader with the data file and ignore

    // all white space nodes.

    reader = new XmlTextReader(filename);

    reader.WhitespaceHandling = WhitespaceHandling.None;

    // Parse the file and display each of the nodes.

    while (reader.Read())

    {

    switch (reader.NodeType)

    {

    case XmlNodeType.Element:

    Console.Write("<{0}>", reader.Name);

    break;

    case XmlNodeType.Text:

    Console.Write(reader.Value);

    break;

    case XmlNodeType.CDATA:

    Console.Write("", reader.Value);

    break;

    case XmlNodeType.ProcessingInstruction:

    Console.Write("", reader.Name, reader.Value);

    break;

    case XmlNodeType.Comment:

    Console.Write("", reader.Value);

    break;

    case XmlNodeType.XmlDeclaration:

    Console.Write("");

    break;

    case XmlNodeType.Document:

    break;

    case XmlNodeType.DocumentType:

    Console.Write(", reader.Name, reader.Value);

    break;

    case XmlNodeType.EntityReference:

    Console.Write(reader.Name);

    break;

    case XmlNodeType.EndElement:

    Console.Write("", reader.Name);

    break;

    }

    }

    }

    finally

    {

    if (reader != null)

    reader.Close();

    }

    }

    } // End class

    Вывод примера содержит сопоставление данных типам узлов.

    Выходныеданные



    ]



    Test with an entity: 123

    test with a child element stuff

    test with a CDATA section ]]> def

    Test with a char entity: A

    <--Fourteen chars in this element.-->

    1234567890ABCD



    Рассматривая входные данные построчно и используя выход, сформированный кодом, можно использовать следующую таблицу для анализа того, какой узел сформировал конкретные строки результата, и понять, какие XML-данные стали соответствующими типами узлов.

    Таблица 2.13





    Входные данные

    Вывод

    Проверка типа узла





    XmlNodeType.XmlDeclaration





    XmlNodeType.Comment

    ]>

    ]

    XmlNodeType.DocumentType





    XmlNodeType.Element





    XmlNodeType.Element

    Проверка с помощью сущности: &number;

    Проверка с помощью сущности: 123

    XmlNodeType.Text





    XmlNodeType.EndElement





    XmNodeType.Element

    test with a child element

    test with a child element

    XmlNodeType.Text





    XmlNodeType.Element

    stuff

    stuff

    XmlNodeType.Text





    XmlNodeType.EndElement





    XmlNodeType.Element

    test with a CDATA section

    test with a CDATA section

    XmlTest.Text

    ]]>

    ]]>

    XmlTest.CDATA

    def

    def

    XmlNodeType.Text





    XmlNodeType.EndElement





    XmlNodeType.Element

    Проверка с помощью сущности char: A

    Проверка с помощью сущности char: А

    XmlNodeType.Text





    XmlNodeType.EndElement



    <--Fourteen chars in this element.-->

    XmlNodeType.Comment





    XmlNodeType.Element

    1234567890ABCD

    1234567890ABCD

    XmlNodeType.Text





    XmlNodeType.EndElement





    XmlNodeType.EndElement

    Необходимо знать, какой тип узла назначен, так как от типа узла зависят допустимые типы действий и типы свойств, которые можно установить и получить.
    1   ...   10   11   12   13   14   15   16   17   ...   32


    написать администратору сайта