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

  • XmlEntityReference

  • EntityHandling

  • Метод Размещение узла

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


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

    2.24. Разворачиваемые и не сохраняемые ссылки на сущности


    Если ссылка на сущность разворачивается и заменяется текстом, который она представляет, узел XmlEntityReference не создается. Вместо этого выполняется синтаксический анализ для декларации сущности и на место XmlEntityReference копируются узлы, созданные из содержимого этой декларации. Таким образом, в примере &publisher; ссылка &publisher; не сохраняется, а вместо нее создается узел XmlText.


    Древовидная структура для разворачиваемых ссылок на сущности

    Сущности-символы, такие как B и <, не сохраняются. Вместо этого они всегда разворачиваются и представляются в виде текстовых узлов.

    Чтобы сохранить узлы XmlEntityReference и дочерние узлы в присоединенной у ней ссылке на сущности, установите флаг EntityHandling в значение ExpandCharEntities. В противном случае оставьте для флага EntityHandling значение по умолчанию - ExpandEntities. В этом случае узлы ссылок на сущности не будут отображаться в модели DOM. Эти узлы замещаются узлами-копиями дочерних узлов декларации сущности.

    Один побочный эффект от несохранения ссылок на сущности состоит в том, что после сохранения документа и передачи его в другое приложение этому приложению будет неизвестно, что узлы были порождены ссылкой на сущность. Если же ссылки на сущности сохраняются, то принимающее приложение, обнаружив ссылку на сущность, считает ее дочерние узлы. Очевидно, что дочерние узлы представляют данные, находившиеся в декларации сущности. Например, модель DOM в случае сохранения ссылок на сущности теоретически имела бы следующую структуру.

    XmlElement: publisher

    XmlEntityReference: &publisher;

    XmlText: Microsoft Press

    Если ссылки на сущности разворачиваются в модели DOM (метод по умолчанию), древовидная структура имеет следующий вид:

    XmlElement: publisher

    XmlText: Microsoft Press

    Обратите внимание, что ссылка на сущность отсутствует и принимающее приложение не может определить, что узел XmlText со значением "Microsoft Press" был создан из декларации сущности.

    Если используется модуль чтения, который не умеет разрешать сущности, метод Load создает исключение, когда обнаруживает ссылку на сущность.

    2.25. Создание новых узлов в модели DOM


    К классе XmlDocument доступен метод для создания всех типов узлов. Для создания узла методу нужно передать имя (если необходимо) и содержимое или другие параметры для узлов, имеющих содержимое (например, текстовый узел). Далее представлены методы, которым необходимо передать имя и некоторые другие параметры для создания нужного узла.

    • CreateCDataSection

    • CreateComment

    • CreateDocumentFragment

    • CreateDocumentType

    • CreateElement

    • CreateNode

    • CreateProcessingInstruction

    • CreateSignificantWhitespace

    • CreateTextNode

    • CreateWhitespace

    • CreateXmlDeclaration

    Для других типов узлов недостаточно просто задать данные параметров.

    После создания новых узлов становятся доступны несколько методов для вставки узлов в дерево. В таблице перечислены методы и описано место появления нового узла в модели XML DOM.

    Таблица 2.15




    Метод

    Размещение узла

    InsertBefore

    Вставляется перед узлом ссылки. Например, следующий код вставляет новый узел в позицию 5:

    Dim refChild As XmlNode = node.ChildNodes(4) 'The reference is zero-based.node.InsertBefore(newChild, refChild);

    XmlNode refChild = node.ChildNodes[4]; //The reference is zero-based. node.InsertBefore(newChild, refChild);

    Дополнительные сведения см. в описании метода InsertBefore.

    InsertAfter

    Вставляется после узла ссылки. Пример:

    node.InsertAfter(newChild, refChild)

    node.InsertAfter(newChild, refChild);

    Дополнительные сведения см. в описании метода InsertAfter.

    AppendChild

    Добавляет узел в конец списка дочерних узлов заданного узла. Если добавляемый узел представляет собой XmlDocumentFragment, все содержимое фрагмента документа перемещается в дочерний список этого узла. Дополнительные сведения см. в описании метода AppendChild.

    PrependChild

    Добавляет узел в начало списка дочерних узлов заданного узла. Если добавляемый узел представляет собой XmlDocumentFragment, все содержимое фрагмента документа перемещается в дочерний список этого узла. Дополнительные сведения см. в описании метода PrependChild.

    Append

    Добавляет узел XmlAttribute в конец коллекции атрибутов, связанной с элементом. Дополнительные сведения см. в описании метода Append.
    1   ...   14   15   16   17   18   19   20   21   ...   32


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