SimpleXML

О библиотеке SimpleXML

Итак - для чего нужна эта библиотека и что она умеет делать.

SimpleXML - это библиотека для синтаксического разбора текстов XML и преобразования их в иерархию XML-объектов. И наоборот: можно программно сформировать иерархию XML-объектов, и уже из нее получить текст XML.

Кроме того, объекты библиотеки содержат немало удобных методов и свойств для работы с иерархическими структурами данных (документами XML).

Могу рекомендовать как достойную замену для MSXML. При использовании Ansi-строк работает быстрее и кушает меньше памяти.

Слово Simple в названии библиотеки не подразумевает простую реализацию. Оно подразумевает простоту использования.

Ограничения на использование

Ограничений практически нет. Библиотека бесплатна и может быть использована по любому назначению. Разрешается внесение любых изменений и использование измененных библиотек без ограничений.

Единственное требование: мой комментарий, помещенный в начало файла SimpleXML.pas должен присутствовать без изменений во всех модификациях библиотеки.

Все авторские права на библиотеку принадлежат лично мне, то есть Михаилу Власову.

Поддержка

Обновления библиотеки и новости о ее развитии всегда можно найти на моем сайте:
http://mv.rb.ru.

Все пожелания и сообщения об ошибках с радостью будут приветствоваться в моем почтовом ящике по адресу:
misha@integro.ru.

Далее...

Если Вы хотите прочитать об особенностях данной библиотеки, Вам следует прочитать статью:

Особенности SimpleXML.

Если же Вам не терпится посмотреть примеры использования, идите сразу к статье:

Примеры использования.

Полный справочник по библиотеке (объекты, свойства, методы и т.д.) можно найти тут:

Справочник SimpleXML.

Авторские права (c) 2002-2003 г.г. Михаил Власов.

Создание и автоматическая генерация HTML-страниц справочника объектов выполнена при помощи программы XMLBuilder


Особенности библиотеки

Из особенностей данной библиотеки мне хотелось бы отметить следующие:

  • Использование таблиц имен
  • Использование интерфейсов
  • Типизированные значения
  • Формат BinaryXML

Использование таблиц имен

В реализации SimpleXML используется идея таблицы имен. Таблица имен просто содержит перечень неких строк, каждой из которых присваивается числовой код, уникальный в пределах таблицы. При каждом документе хранится ссылка на таблицу имен, используемую в названиях элементов и атрибутов. В самих элементах для хранения названий используются не строки, а числовые коды. Тоже самое справедливо и в отношении названий атрибутов.

Что это дает?

Во-первых, это дает значительную экономию памяти, особенно при работе с большими документами, ведь вместо хранения тысяч строк можно хранить тысячи целых чисел. Они и места занимают меньше и память для них резервировать не надо.

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

Что еще можно сказать по поводу таблиц имен?

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

Использование интерфейсов

В библиотеке SimpleXML все объекты представлены в виде интерфейсов (interface вместо class), так как работа с интерфейсами намного проще и безопаснее чем работа со ссылками на объекты. Не нужно строить многоэтажные конструкции try и finally для корректного уничтожения объектов, весь этот код за Вас теперь делает компилятор Delphi. Не нужно кропотливо отслеживать "повисшие" указатели. Объект не сможет уничтожиться случайным образом, если есть хотя бы одна ссылка на него. Теперь не будет не уничтоженных объектов, так как при удалении последней ссылки объект будет автоматически уничтожен. Итак - использование интерфейсов вместо классов делает Ваш код менее загроможденным, более читаемым и более надежным.

Типизированные значения

Для хранения значений атрибутов в SimpleXML используются не строки, а значения типа Variant, что экономит память и повышает производительность, так как целые числа можно хранить именно как целые числа, вещественные - как вещественные, типизированные - как типизированные, а не как их строковые представления. Кроме того, каждый узел имеет собственное типизированное значение.

Формат BinaryXML

Дополнительно к каноническому текстовому формату XML для хранения данных документа, библиотека SimpleXML предлагает свой компактный формат BinaryXML. В этом формате данные документа помещаются в двоичный блок, в начале которого размещается таблица имен, а затем собственно вся иерархия документа в двоичном виде. Названия элементов и атрибутов сохраняются в виде числовых кодов, что повышает компактность данного формата. Значения атрибутов и собственные значения узлов сохраняются в типизированном виде, что позволяет восстановить все типы значений при считывании документа из этого формата. Если Вам нет необходимости обмениваться документами XML с другими программами, или другие программы написаны Вами и понимают формат BinaryXML, то он намного предпочтительнее классического текстового формата XML. Итак - преимущества следующие: компактность, скорость, сохранение типизированных значений. Недостаток - несовместимость со сторонними программами. Хочу заметить, что данный формат является дополнительной возможностью. Библиотека SimpleXML, конечно же, умеет читать и записывать документы в стандартном текстовом формате XML.


Пример использования

Здесь я приведу парочку примеров по использованию библиотеки.

В первом примере мы рассмотрим создание и запись документа. Во втором - чтение существующего документа и его простой анализ.

Пример 1. Создание и запись документа

var
  aDoc: IXmlDocument;
  anElem: IXmlElement;
begin
  // Создаем пустой документ XML с корневым элементом "root-element"
  aDoc := CreateXmlDocument('xml');

  // Создаем элемент 'elem' и добавляем его в качестве дочернего элемента для корневого
  anElem := aDoc.DocumentElement.AppendElement('elem');

  // Добавляем атрибуты 'a1' и 'a2' к новому элементу
  anElem.SetAttr('a1', 'elem1 a1');
  anElem.SetAttr('a2', 'elem1 a2');

  // Добавляем еще один элемент 'elem'
  anElem := aDoc.DocumentElement.AppendElement('elem');
  anElem.SetAttr('a1', 'elem2 a1');
  anElem.SetAttr('a2', 'elem2 a2');

  // Сохраняем документ в файл
  aDoc.Save('Test.xml');
end;

Пример 2. Чтение и анализ документа

Пример внешнего файла, например Test.xml

<?xml version="1.0" encoding="window-1251"?>
<root>
  <elem1 a1="v1" a2="v2"> 1</elem1>
  <!--  -->
  <elem2 a1="v1" a2="v2"> 2</elem2>
</root>

Пример кода

var
  aDoc: IXmlDocument;
  anElem2: IXmlNode;
begin
  // Создаем пустой документ XML
  aDoc := CreateXmlDocument;

  // Считываем из файла
  aDoc.Load('Test.xml');

  // Выводим в Memo1 полный текст считаного XML
  Memo1.Lines.Text := aDoc.Xml;

  Memo1.Lines.Add('------------------------');

  // Ищем первый элемент с тэгом 'elem2'
  anElem2 := aDoc.DocumentElement.SelectSingleNode('elem2');

  // Выводим в Memo1 XML-текст элемента anElem2
  Memo1.Lines.Add(anElem2.Xml);

  Memo1.Lines.Add('------------------------');

  // Выводим в Memo1 значение атрибута 'a2' элемента anElem2
  Memo1.Lines.Add(anElem2.GetAttr('a2'));
end;


Сводный список

№ | Название | Описание
1 | IXmlNameTable | Таблица имен. Каждому имени сопоставляется некий уникальный числовой идентификатор. Используется для хранения названий тэгов и названий атрибутов.
2 | IXmlNodeList | Список узлов. Организован в виде массива. Доступ к элементам списка осуществляется по индексу. Нумерация элементов начинается с нуля.
3 | IXmlNode | Узел XML-дерева. Этот объект является базовым объектом для всех типов узлов.
4 | IXmlElement | Узел XML-дерева, являющийся элементом.
5 | IXmlCharacterData | Узел XML-дерева, являющийся текстом.
6 | IXmlText | Узел XML-дерева, являющийся текстовым блоком.
7 | IXmlCDATASection | Узел XML-дерева, являющийся секцией CDATA.
8 | IXmlComment | Узел XML-дерева, являющийся секцией комментария.
9 | IXmlProcessingInstruction | Узел XML-дерева, являющийся управляющей инструкцией.
10 | IXmlDocument | Наиглавнейший объект - представляет все XML-дерево или, другими словами, XML-документ.
11 | global | Глобальные переменные, процедуры и функции.


Глобальные Объект IXmlDocument

Объект IXmlDocument

Наиглавнейший объект - представляет все XML-дерево или, другими словами, XML-документ.

Свойства

Свойство | Описание
DocumentElement | Получить корневой элемент документа.
PreserveWhiteSpace | Получить или изменить признак сохранения пробельных символов.
BinaryXML | Получить двоичный блок, содержащий данные всего документа.

Методы

Метод | Описание
NewDocument | Полностью очищает все содержимое документа и инициализирует его заданными параметрами.
CreateElement | Создать новый элемент.
CreateText | Создать новый текстовый узел.
CreateCDATASection | Создать новую секцию CDATA.
CreateComment | Создать новую секцию комментария.
CreateProcessingInstruction | Создать новую управляющую инструкцию.
LoadXML | Загрузить документ из строки в формате XML или из строки, представляющей двоичный блок в формате BinaryXML.
LoadBinaryXML | Загрузить документ из строки, содержащей двоичный блок в формате BinaryXML.
Load | Загрузить документ из потока или файла, содержащего текст XML или данные в формате BinaryXML.
LoadResource | Загрузить документ из ресурса программы.
Save | Записать текст в формате XML в файл или поток.
SaveBinary | Записать текст в формате BinaryXML в файл или поток.


Глобальные Объект IXmlNode

Объект IXmlNode

Узел XML-дерева. Этот объект является базовым объектом для всех типов узлов.

Свойства

Свойство | Описание
NameTable | Получить таблицу имен, использующуюся для работы с названиями элемента и его атрибутов.
NodeName | Получить название узла.
NodeNameID | Получить идентификатор названия узла.
NodeType | Получить тип узла.
ParentNode | Получить родительский узел.
OwnerDocument | Получить объект IXmlDocument в иерархии которого расположен данный узел.
ChildNodes | Получить список всех дочерних узлов.
AttrCount | Получить количество всех атрибутов узла.
AttrNames | Получить названия атрибутов узла.
AttrNameIDs | Получить идентификаторы названий атрибутов узла.
Text | Получает или изменяет объединенные значения узла и всех его дочерних узлов.
DataType | Получает тип данных собственного значения узла.
TypedValue | Получает собственное значение узла.
XML | Возвращает текстовое представление узла и всех вложенных узлов в формате XML.

Методы

Метод | Описание
AppendChild | Добавить дочерний узел.
InsertBefore | Вставить дочерний узел перед другим дочерним узлом.
ReplaceChild | Заменить один из дочерних элементов на новый.
RemoveChild | Удалить узел из списка дочерних узлов.
AppendElement | Создать новый элемент и добавить его в конец списка дочерних элементов.
AppendText | Создать текстовый узел и добавить его в конец списка дочерних узлов.
AppendCDATA | Создать секцию CDATA и добавить ее в конец списка дочерних узлов.
AppendComment | Создать секцию комментария и добавить ее в конец списка дочерних узлов.
AppendProcessingInstruction | Создать управляющую инструкцию и добавить ее в конец списка дочерних узлов.
GetChildText | Получить текстовое содержимое указанного дочернего элемента.
SetChildText | Изменить значение текста указанного дочернего элемента.
RemoveAllChilds | Удалить все дочерние узлы.
SelectNodes | Найти все дочерние элементы с указанным названием.
SelectSingleNode | Найти дочерний элемент с указанным названием.
FindElement | Найти элемент по его названию и значению атрибута.
RemoveAttr | Удалить указанный атрибут.
RemoveAllAttrs | Удалить все атрибуты узла.
AttrExists | Проверить, задан атрибут с указанным названием или нет.
GetAttrType | Получить тип данных значения указанного атрибута.
GetVarAttr | Получить значение указанного атрибута.
SetVarAttr | Задать значение указанного атрибута.
NeedAttr | Получить значение атрибута в строковом виде.
GetAttr | Получить значение атрибута в виде строки.
SetAttr | Задать строковое значение атрибута.
GetBoolAttr | Получить логическое значение атрибута.
SetBoolAttr | Задать логическое значение атрибута.
GetIntAttr | Получить целочисленное значение атрибута.
SetIntAttr | Задать целочисленное значение атрибута.
GetFloatAttr | Получить значение атрибута в виде вещественного числа.
SetFloatAttr | Задать значение атрибута в виде вещественного числа.
GetHexAttr | Получить значение атрибута в виде целого числа. При этом текущее значение атрибута должно быть строкой, являющейся шестнадцатиричным представлением целого числа. Строка не должна содержать различных управляющих префиксов, таких как "$" или "0x".
SetHexAttr | Задать значение атрибута в виде строкового представления целого числа в шестнадцатеричном виде.
GetEnumAttr | Получить значение атрибута в виде индекса одного из предопределенных строковых значений.
NeedEnumAttr | Получить значение атрибута в виде индекса одного из предопределенных строковых значений.
AsElement | Получить текщий узел в виде объекта {IXmlElement}.
AsText | Получить текщий узел в виде объекта {IXmlText}.
AsCDATASection | Получить текщий узел в виде объекта {IXmlCDATASection}.
AsComment | Получить текщий узел в виде объекта {IXmlComment}.
AsProcessingInstruction | Получить текщий узел в виде объекта {IXmlProcessingInstruction}.


Глобальные Объект IXmlNodeList

Объект IXmlNodeList

Список узлов. Организован в виде массива. Доступ к элементам списка осуществляется по индексу. Нумерация элементов начинается с нуля.

Свойства

Свойство | Описание
Count | Возвращает количество элементов в списке.
Item | Получение элемента списка.
XML | Получение XML, составленного из XML всех элементов списка.


Глобальные Объект IXmlNameTable

Объект IXmlNameTable

Таблица имен. Каждому имени сопоставляется некий уникальный числовой идентификатор. Используется для хранения названий тэгов и названий атрибутов.

Методы

Метод | Описание
GetID | Возвращает числовой идентификатор указанной строки.
GetName | Возвращает строку, соответвующую числовой идентификатору.


Глобальные Объект IXmlElement

Объект IXmlElement

Узел XML-дерева, являющийся элементом.

Методы

Метод | Описание
ReplaceTextByCDATASection | Удалить все текстовые узлы, содержащиеся в списке дочерних узлов и вставить вместо них одну секцию CDATA с указанным текстом.
ReplaceTextByBynaryData
GetTextAsBynaryData


Глобальные Объект IXmlText

Объект IXmlText

Узел XML-дерева, являющийся текстовым блоком.


Глобальные Объект IXmlCDATASection

Объект IXmlCDATASection

Узел XML-дерева, являющийся секцией CDATA.


Глобальные Объект IXmlProcessingInstruction

Объект IXmlProcessingInstruction

Узел XML-дерева, являющийся управляющей инструкцией.


Глобальные Объект IXmlComment

Объект IXmlComment

Узел XML-дерева, являющийся секцией комментария.


Глобальные переменные, процедуры и функции

Глобальные переменные, процедуры и функции.

Переменные

Переменная | Описание
DefaultNameTable | Глобальная таблица имен.
DefaultPreserveWhiteSpace | Признак сохранения пробельных символов по умолчанию.

Процедуры и функции

Процедура/функция | Описание
CreateNameTable | Создать новую таблицу имен.
CreateXmlDocument | Создать экземпляр XML-документа.


Функция/процедура CreateNameTable

Создать новую таблицу имен.

Синтаксис

function CreateNameTable(aHashTableSize: Integer = 4096): IXmlNameTable;

Параметры

aHashTableSize
Размер хэш-таблицы, используемой для хранения строк. Рекомендуется оставлять значение по умолчанию (4KB). Практика показала, что это - наиболее оптимальное значение.

Возвращаемое значение

Возвращает объект IXmlNameTable - новая таблица имен.


Функция/процедура CreateXmlDocument

Создать экземпляр XML-документа.

Синтаксис

function CreateXmlDocument(
    const aRootElementName: String = '';
    const aVersion: String = '1.0';
    const anEncoding: String = 'windows-1251';
    const aNames: IXmlNameTable = nil): IXmlDocument;

Параметры

aRootElementName
Название корневого элемента. Если этот параметр не равен пустой строке, то в новом документе будет создан корневой элемент с таким названием.
aVersion
Значение атрибута version для управляющей инструкции <?xml?>.
anEncoding
Значение атрибута encoding для управляющей инструкции <?xml?>.
aNames
Таблица имен, которую будет использовать новый документ.
Если этот параметр = nil, то новый документ будет использовать глобальную таблицу имен DefaultNameTable.

Возвращаемое значение

Объект IXmlDocument - только что созданный XML-документ.

Примечания

Если параметр aRootElementName содержит пустую строку, то будет создан абсолютно пустой документ.

В противном случае документ будет содержать одну управляющую инструкцию <?xml?> и корневой элемент.


Переменная DefaultNameTable

Глобальная таблица имен.

Синтаксис

DefaultNameTable: IXmlNameTable;


Переменная DefaultPreserveWhiteSpace

Признак сохранения пробельных символов по умолчанию.

Синтаксис

property DefaultPreserveWhiteSpace: Boolean;

Значение

Признак сохранения пробельных символов.

Примечания

Данное свойство влияет на чтение входного XML и формирование выходного XML.

Если данное свойство True, то при чтении XML все пустые текстовые элементы (содержащие только пробелы, переводы строки и символы табуляции) будут проигнорированы.

При формировании выходного XML, значение этого свойства True приведет к "красивому" форматированию выходного документа (при просмотре текста будет наглядно видна иерархическая структура). "Красивое" форматирование достигается за счет добавления в выходной XML дополнительных текстовых элементов.

Глобальная переменная DefaultPreserveWhiteSpace копируется в свойство PreserveWhiteSpace создаваемых объектов IXmlDocument.

Если необходимо изменить работу с пробельными символами у конкретного экземпляра IXmlDocument то необходимо сразу после создания такого объекта переустановить у него свойство PreserveWhiteSpace в нужное значение.


Глобальные Объект IXmlCharacterData

Объект IXmlCharacterData

Узел XML-дерева, являющийся текстом.


Свойство BinaryXML (Объект IXmlDocument)

Получить двоичный блок, содержащий данные всего документа.

Синтаксис

property BinaryXML: String;

Значение

Строка, содержащая двоичный блок со всеми данными всего документа.


Метод CreateCDATASection (Объект IXmlDocument)

Создать новую секцию CDATA.

Синтаксис

function CreateCDATASection(const aData: TXmlString): IXmlCDATASection;

Параметры

aData
Текстовое содержимое новой секции.

Возвращаемое значение

Объект {IXmlCDATASection} - только что созданная секция CDATA.

Примечания

Созданная секция ни куда автоматически не помещается. То есть, образно говоря, она "висит в воздухе". Для того, что бы поместить ее в иерархию документа, используйте метод IXmlNode.AppendChild или IXmlNode.InsertChild.


Метод CreateComment (Объект IXmlDocument)

Создать новую секцию комментария.

Синтаксис

function CreateComment(const aData: TXmlString): IXmlComment;

Параметры

aData
Текстовое содержимое новой секции.

Возвращаемое значение

Объект {IXmlComment} - только что созданная секция комментария.

Примечания

Созданная секция ни куда автоматически не помещается. То есть, образно говоря, она "висит в воздухе". Для того, что бы поместить ее в иерархию документа, используйте метод IXmlNode.AppendChild или IXmlNode.InsertChild.


Метод CreateElement (Объект IXmlDocument)

Создать новый элемент.

Синтаксис

function CreateElement(const aName: TXmlString): IXmlElement; overload;
function CreateElement(aNameID: Integer): IXmlElement; overload;

Параметры

aName
Название элемента.
aNameID
Код названия элемента. Код должен быть получен из таблицы имен данного документа.

Возвращаемое значение

Объект {IXmlElement} - только что созданный элемент.

Примечания

Созданный элемент ни куда автоматически не помещается. То есть, образно говоря, он "висит в воздухе". Для того, что бы поместить его в иерархию документа, используйте метод IXmlNode.AppendChild или IXmlNode.InsertChild.


Метод CreateProcessingInstruction (Объект IXmlDocument)

Создать новую управляющую инструкцию.

Синтаксис

function CreateProcessingInstruction(const aTarget,
    aData: TXmlString): IXmlProcessingInstruction; overload;
function CreateProcessingInstruction(aTargetID: Integer;
    const aData: TXmlString): IXmlProcessingInstruction; overload;

Параметры

aTarget
Название управляющей инструкции.
aTargetID
Код названия управляющей инструкции. Код должен быть получен в таблице имен данного документа.
aData
Данные (обычно перечень атрибутов) управляющей инструкции.

Возвращаемое значение

Объект {IXmlProcessingInstruction} - только что созданная управляющая инструкция.

Примечания

Созданная инструкция ни куда автоматически не помещается. То есть, образно говоря, она "висит в воздухе". Для того, что бы поместить ее в иерархию документа, используйте метод IXmlNode.AppendChild или IXmlNode.InsertChild.


Метод CreateText (Объект IXmlDocument)

Создать новый текстовый узел.

Синтаксис

function CreateText(const aData: TXmlString): IXmlText;

Параметры

aData
Текстовое содержимое нового узла.

Возвращаемое значение

Объект {IXmlText} - только что созданный текстовый узел.

Примечания

Созданный узел ни куда автоматически не помещается. То есть, образно говоря, он "висит в воздухе". Для того, что бы поместить его в иерархию документа, используйте метод IXmlNode.AppendChild или IXmlNode.InsertChild.


Свойство DocumentElement (Объект IXmlDocument)

Получить корневой элемент документа.

Синтаксис

property DocumentElement: IXmlElement;

Значение

Объект {IXmlElement} - корневой элемент документа или nil, если документ еще не содержит корневого элемента.


Метод Load (Объект IXmlDocument)

Загрузить документ из потока или файла, содержащего текст XML или данные в формате BinaryXML.

Синтаксис

procedure Load(aStream: TStream); overload;
procedure Load(const aFileName: TXmlString); overload;

Параметры

aStream
Поток, содержащий текст XML или данные в формате BinaryXML.
aFileName
Имя файла, содержащего текст XML или данные в формате BinaryXML.

Примечания

Перед загрузкой документа его предыдущее содержимое будет уничтожено.

Формат данных, размещенных в файле или потоке (текст XML или BinaryXML), определяется по наличию в начале файла или потока специальной сигнатуры BinaryXML.

ВНИМАНИЕ! При загрузке BinaryXML, для документа создается новая таблица имен, содержимое которой содержится в данных BinaryXML.


Метод LoadBinaryXML (Объект IXmlDocument)

Загрузить документ из строки, содержащей двоичный блок в формате BinaryXML.

Синтаксис

procedure LoadBinaryXML(const aXML: String);

Параметры

aXML
Строка, содержащая двоичные блок в формате BinaryXML.

Примечания

Перед загрузкой документа его предыдущее содержимое будет уничтожено.

ВНИМАНИЕ! При загрузке BinaryXML, для документа создается новая таблица имен, содержимое которой содержится в данных BinaryXML.


Метод LoadResource (Объект IXmlDocument)

Загрузить документ из ресурса программы.

Синтаксис

procedure LoadResource(aType, aName: PChar);

Параметры

aType
Тип ресурса. Может быть как строкой так и числовым кодом.
Если необходимо задать тип ресурса числовым кодом, просто используйте преобразование числа к PChar. Например, если тип ресурса имеет код 100, то при вызове следует указывать PChar(100).
aName
Имя ресурса. Может быть как строкой так и числовым кодом.
Если необходимо задать имя ресурса числовым кодом, просто используйте преобразование числа к PChar. Например, если имя ресурса имеет код 100, то при вызове следует указывать PChar(100).

Примечания

Перед загрузкой документа его предыдущее содержимое будет уничтожено.

Формат данных, размещенных в ресурсе (текст XML или BinaryXML), определяется по наличию в начале данных ресурса специальной сигнатуры BinaryXML.

ВНИМАНИЕ! При загрузке BinaryXML, для документа создается новая таблица имен, содержимое которой содержится в данных BinaryXML.


Метод LoadXML (Объект IXmlDocument)

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

Синтаксис

procedure LoadXML(const aXML: TXmlString);

Параметры

aXML
Строка, содержащая текст в формате XML. Либо строка, содержащая двоичные блок в формате BinaryXML.

Примечания

Перед загрузкой документа его предыдущее содержимое будет уничтожено.

Формат строки (текст XML или BinaryXML), определяется по наличию в начале строки специальной сигнатуры BinaryXML.

ВНИМАНИЕ! При загрузке BinaryXML, для документа создается новая таблица имен, содержимое которой содержится в данных BinaryXML.


Метод NewDocument (Объект IXmlDocument)

Полностью очищает все содержимое документа и инициализирует его заданными параметрами.

Синтаксис

function NewDocument(const aVersion, anEncoding,
    aRootElementName: TXmlString): IXmlElement; overload;
function NewDocument(const aVersion, anEncoding: TXmlString;
    aRootElementNameID: Integer): IXmlElement; overload;

Параметры

aVersion
Версия XML.
anEncoding
Кодировка XML.
aRootElementName
Название корневого элемента.
aRootElementNameID
Код названия корневого элемента. Код должен быть получен из таблицы имен данного документа.

Возвращаемое значение

Объект {IXmlElement} - корневой элемент документа или nil, если крневой элемент не задан.

Примечания

Если задан параметр aVersion и(или) anEncoding, в новый документ будет добавлена управляющая инструкция с соответствующими атрибутами.

Если задано название корневого элемента, в новый документ будет добавлена указанный элемент.


Свойство PreserveWhiteSpace (Объект IXmlDocument)

Получить или изменить признак сохранения пробельных символов.

Синтаксис

property PreserveWhiteSpace: Boolean;

Значение

Признак сохранения пробельных символов.

Примечания

Данное свойство влияет на чтение входного XML и формирование выходного XML.

Если данное свойство True, то при чтении XML все пустые текстовые элементы (содержащие только пробелы, переводы строки и символы табуляции) будут проигнорированы.

При формировании выходного XML, значение этого свойства True приведет к "красивому" форматированию выходного документа (при просмотре текста будет наглядно видна иерархическая структура). "Красивое" форматирование достигается за счет добавления в выходной XML дополнительных текстовых элементов.

При создании нового документа с помощью функции CreateXmlDocument значение PreserveWhiteSpace у только что созданного объекта копируется из глобальной переменной DefaultPreserveWhiteSpace.

Если необходимо изменить работу с пробельными символами у конкретного экземпляра IXmlDocument то необходимо сразу после создания такого объекта переустановить у него свойство PreserveWhiteSpace в нужное значение.


Метод Save (Объект IXmlDocument)

Записать текст в формате XML в файл или поток.

Синтаксис

procedure Save(aStream: TStream); overload;
procedure Save(const aFileName: TXmlString); overload;

Параметры

aStream
Поток, в который нужно записать текст.
aFileName
Имя файла, в который нужно записать текст.

Примечания

При записи в файл, если файл с таким именем уже существует, его содержимое будет полностью перезаписано.


Метод SaveBinary (Объект IXmlDocument)

Записать текст в формате BinaryXML в файл или поток.

Синтаксис

procedure SaveBinary(aStream: TStream; anOptions: LongWord = 0); overload;
procedure SaveBinary(const aFileName: TXmlString; anOptions: LongWord = 0); overload;

Параметры

aStream
Поток, в который нужно записать данные.
aFileName
Имя файла, в который нужно записать данные.
anOptions
Параметры, позволяющие управлять некоторыми тонкостями при записи данных.
Могут быть комбинацией следующих значений:
Значение | Описание
BINXML_USE_WIDE_CHARS | Все строки будут записаны в формате UNICODE (WideString)
BINXML_COMPRESSED | При записи данные будут упаковываться при помощи библиотеки ZLIB (формат ZIP). ЗАМЕЧАНИЕ: Данная возможность пока не реализована, флаг зарезервирован на будущее.


Метод GetTextAsBynaryData (Объект IXmlElement)

Синтаксис

function GetTextAsBynaryData: TXmlString;


Метод ReplaceTextByBynaryData (Объект IXmlElement)

Синтаксис

procedure ReplaceTextByBynaryData(const aData; aSize: Integer;
    aMaxLineLength: Integer);

Параметры

aData


Метод ReplaceTextByCDATASection (Объект IXmlElement)

Удалить все текстовые узлы, содержащиеся в списке дочерних узлов и вставить вместо них одну секцию CDATA с указанным текстом.

Синтаксис

procedure ReplaceTextByCDATASection(const aText: TXmlString);

Параметры

aText
Текст для новой секции CDATA.

Примечания

Если указанный текст содержит последовательность(и) "]]>", будет вставлено несколько секций CDATA.

Перед добавлением будут удалены только текстовые узлы (текстовые блоки и секции CDATA). Остальные узлы остануться в списке дочерних узлов.


Метод GetID (Объект IXmlNameTable)

Возвращает числовой идентификатор указанной строки.

Синтаксис

function GetID(const aName: TXmlString): Integer;

Параметры

aName
Строка, идентификатор которой надо возвратить.

Возвращаемое значение

Числовой идентификатор указанной строки.

См.также

GetName


Метод GetName (Объект IXmlNameTable)

Возвращает строку, соответвующую числовой идентификатору.

Синтаксис

function GetName(anID: Integer): TXmlString;

Параметры

amID
Идентификатор строки.

Возвращаемое значение

Строка, соответствующая указанному идентификатору.

См.также

GetID


Метод AppendCDATA (Объект IXmlNode)

Создать секцию CDATA и добавить ее в конец списка дочерних узлов.

Синтаксис

function AppendCDATA(const aData: TXmlString): IXmlCDATASection;

Параметры

aData
Текстовое содержимое для новой секции CDATA.

Возвращаемое значение

Объект {IXmlCDATASection} - созданный узел секции CDATA.


Метод AppendChild (Объект IXmlNode)

Добавить дочерний узел.

Синтаксис

procedure AppendChild(const aChild: IXmlNode);

Параметры

aChild
Узел который необходимо добавить в список дочерних узлов. Такой узел можно создать используя методы CreateXXX объекта IXmlDocument.

Примечания

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


Метод AppendComment (Объект IXmlNode)

Создать секцию комментария и добавить ее в конец списка дочерних узлов.

Синтаксис

function AppendComment(const aData: TXmlString): IXmlComment;

Параметры

aData
Текст комментария.

Возвращаемое значение

Объект {IXmlComment} - созданный узел секции комментария.


Метод AppendElement (Объект IXmlNode)

Создать новый элемент и добавить его в конец списка дочерних элементов.

Синтаксис

function AppendElement(const aName: TxmlString): IXmlElement; overload;
function AppendElement(aNameID: Integer): IXmlElement; overload;

Параметры

aName
Название нового элемента.
aNameID
Код названия нового элемента. Данный код должен содержаться в таблице имен документа, к которому относится данный узел.

Возвращаемое значение

Объект {IXmlElement} - созданный элемент.

Примечания

Обычно данный метод вызывается как процедура и возвращаемое значение игнорируется.


Метод AppendProcessingInstruction (Объект IXmlNode)

Создать управляющую инструкцию и добавить ее в конец списка дочерних узлов.

Синтаксис

function AppendProcessingInstruction(const aTarget: TXmlString;
    const aData: TXmlString): IXmlProcessingInstruction; overload;
function AppendProcessingInstruction(aTargetID: Integer;
    const aData: TXmlString): IXmlProcessingInstruction; overload;

Параметры

aTarget
Название управляющей инструкции.
aTargetID
Код названия управляющей инструкции. Данный код должен располагаться в таблице имен документа, к которому относится данный узел.
aData
Данные управляющей инструкции.

Возвращаемое значение

Объект {IXmlProcessingInstruction} - созданный узел управляющей инструкции.


Метод AppendText (Объект IXmlNode)

Создать текстовый узел и добавить его в конец списка дочерних узлов.

Синтаксис

function AppendText(const aData: TXmlString): IXmlText;

Параметры

aData
Текстовое содержимое нового узла.

Возвращаемое значение

Объект {IXmlText} - созданный текстовый узел.

Примечания

Обычно данный метод вызывается как процедура и возвращаемое значение игнорируется.


Метод AsCDATASection (Объект IXmlNode)

Получить текщий узел в виде объекта {IXmlCDATASection}.

Синтаксис

function AsCDATASection: IXmlCDATASection;

Примечания

Если данный узел не является секцией CDATA, будет сгенерировано исключение.


Метод AsComment (Объект IXmlNode)

Получить текщий узел в виде объекта {IXmlComment}.

Синтаксис

function AsComment: IXmlComment;

Примечания

Если данный узел не является секцией комментария, будет сгенерировано исключение.


Метод AsElement (Объект IXmlNode)

Получить текщий узел в виде объекта {IXmlElement}.

Синтаксис

function AsElement: IXmlElement;

Примечания

Если данный узел не является элементом, будет сгенерировано исключение.


Метод AsProcessingInstruction (Объект IXmlNode)

Получить текщий узел в виде объекта {IXmlProcessingInstruction}.

Синтаксис

function AsProcessingInstruction: IXmlProcessingInstruction;

Примечания

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


Метод AsText (Объект IXmlNode)

Получить текщий узел в виде объекта {IXmlText}.

Синтаксис

function AsText: IXmlText;

Примечания

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


Свойство AttrCount (Объект IXmlNode)

Получить количество всех атрибутов узла.

Синтаксис

property AttrCount: Integer;

Значение

Количество всех атрибутов узла.


Метод AttrExists (Объект IXmlNode)

Проверить, задан атрибут с указанным названием или нет.

Синтаксис

function AttrExists(const aName: TXmlString): Boolean; overload;
function AttrExists(aNameID: Integer): Boolean; overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.

Возвращаемое значение

True, если атрибут задан или False в противном случае.


Свойство AttrNameIDs (Объект IXmlNode)

Получить идентификаторы названий атрибутов узла.

Синтаксис

property AttrNameIDs[anIndex: Integer]: Integer;

Параметры

anIndex
Индекс (порядковый номер) атрибута. Нумерация атрибутов начинается с нуля.

Значение

Идентификатор названия атрибута с указанным индексом.


Свойство AttrNames (Объект IXmlNode)

Получить названия атрибутов узла.

Синтаксис

property AttrNames[anIndex: Integer]: TXmlString;

Параметры

anIndex
Индекс (порядковый номер) атрибута. Нумерация атрибутов начинается с нуля.

Значение

Название атрибута с указанным индексом.


Свойство ChildNodes (Объект IXmlNode)

Получить список всех дочерних узлов.

Синтаксис

property ChildNodes: IXmlNodeList;

Значение

Объект IXmlNodeList, который содержит все дочерние узлы данного узла.

Если данный узел не содержит дочерних узлов, это свойство вернет пустой IXmlNodeList.


Свойство DataType (Объект IXmlNode)

Получает тип данных собственного значения узла.

Синтаксис

property DataType: Integer;

Значение

Тип данных собственного значения узла. Возможные значения:
varEmpty
varNull
varSmallint
varInteger
varSingle
varDouble
varCurrency
varDate
varOleStr
varBoolean
varShortInt
varByte
varWord
varLongWord
varInt64
varString
varArray + varByte


Метод FindElement (Объект IXmlNode)

Найти элемент по его названию и значению атрибута.

Синтаксис

function FindElement(const anElementName, anAttrName: String; const anAttrValue: Variant): IXmlElement;

Параметры

anElementName
Название элемента, который необходимо найти.
anAttrName
Название атрибута, по которому будет производиться поиск.
anAttrValue
Значение атрибута для поиска.

Возвращаемое значение

Найденный элемент или nil, если элемент не будет найден.


Метод GetAttr (Объект IXmlNode)

Получить значение атрибута в виде строки.

Синтаксис

function GetAttr(const aName: TXmlString; const aDefault: TXmlString = ''): TXmlString; overload;
function GetAttr(aNameID: Integer; const aDefault: TXmlString = ''): TXmlString; overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aDefault
Значение по умолчанию. Оно будет возвращено в том случае, если указанный атрибут не задан.

Возвращаемое значение

Значение указанного атрибута в виде строки или значение параметра aDefault, если атрибут не задан.


Метод GetAttrType (Объект IXmlNode)

Получить тип данных значения указанного атрибута.

Синтаксис

function GetAttrType(const aName: TXmlString): Integer; overload;
function GetAttrType(aNameID: Integer): Integer; overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.

Возвращаемое значение

Тип данных значения указанного атрибута. Возможные значения:
varEmpty
varNull
varSmallint
varInteger
varSingle
varDouble
varCurrency
varDate
varOleStr
varBoolean
varShortInt
varByte
varWord
varLongWord
varInt64
varString
varArray + varByte.

Примечания

Если указанный атрибут не задан для данного узла, то будет возвращено значение varString.


Метод GetBoolAttr (Объект IXmlNode)

Получить логическое значение атрибута.

Синтаксис

function GetBoolAttr(const aName: TXmlString; aDefault: Boolean = False): Boolean; overload;
function GetBoolAttr(aNameID: Integer; aDefault: Boolean = False): Boolean; overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aDefault
Значение по умолчанию. Оно будет возвращено в том случае, если указанный атрибут не задан.

Возвращаемое значение

Значение указанного атрибута в виде логического значения или значение параметра aDefault, если атрибут не задан.

Примечания

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


Метод GetChildText (Объект IXmlNode)

Получить текстовое содержимое указанного дочернего элемента.

Синтаксис

function GetChildText(const aName: TXmlString; const aDefault: TXmlString = ''): TXmlString; overload;
function GetChildText(aNameID: Integer; const aDefault: TXmlString = ''): TXmlString; overload;

Параметры

aName
Название дочернего элемента.
aNameID
Код названия дочернего элемента. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aDefault
Значение по умолчанию, возвращается, если данный узел не содержит элементов с указанным названием.

Возвращаемое значение

Текстовое содержимое указанного дочернего элемента или значение параметра aDefault, если указанный элемент не содержится в списке дочерних узлов.

Примечания

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

Если указанный элемент не будет найден, то возвращаемое значение будет равно значению параметра aDefault.


Метод GetEnumAttr (Объект IXmlNode)

Получить значение атрибута в виде индекса одного из предопределенных строковых значений.

Синтаксис

function GetEnumAttr(const aName: TXmlString;
    const aValues: array of TXmlString; aDefault: Integer = 0): Integer; overload;
function GetEnumAttr(aNameID: Integer;
    const aValues: array of TXmlString; aDefault: Integer = 0): Integer; overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aValues
Перечень всех допустимых значений атрибута.
aDefault
Значение по умолчанию. Оно будет возвращено в том случае, если указанный атрибут не задан.

Возвращаемое значение

Индекс одного из предопределенных строковых значений из массива aValues.

Если атрибут не задан, то будет возвращено значение параметра aDefault.

Примечания

Если атрибут задан, но его значение не содержится в списке aValues, будет сгенерировано исключение.

При поиске значения в списке учитывается регистр букв.


Метод GetFloatAttr (Объект IXmlNode)

Получить значение атрибута в виде вещественного числа.

Синтаксис

function GetFloatAttr(const aName: TXmlString; aDefault: Double = 0): Double; overload;
function GetFloatAttr(aNameID: Integer; aDefault: Double = 0): Double; overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aDefault
Значение по умолчанию. Оно будет возвращено в том случае, если указанный атрибут не задан.

Возвращаемое значение

Значение указанного атрибута в виде вещественного числа или значение параметра aDefault, если атрибут не задан.

Примечания

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


Метод GetHexAttr (Объект IXmlNode)

Получить значение атрибута в виде целого числа. При этом текущее значение атрибута должно быть строкой, являющейся шестнадцатиричным представлением целого числа. Строка не должна содержать различных управляющих префиксов, таких как "$" или "0x".

Синтаксис

function GetHexAttr(const aName: TXmlString; aDefault: Integer = 0): Integer; overload;
function GetHexAttr(aNameID: Integer; aDefault: Integer = 0): Integer; overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aDefault
Значение по умолчанию. Оно будет возвращено в том случае, если указанный атрибут не задан.

Возвращаемое значение

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

Если атрибут не задан, то будет возвращено значение параметра aDefault.

Примечания

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


Метод GetIntAttr (Объект IXmlNode)

Получить целочисленное значение атрибута.

Синтаксис

function GetIntAttr(const aName: TXmlString; aDefault: Integer = 0): Integer; overload;
function GetIntAttr(aNameID: Integer; aDefault: Integer = 0): Integer; overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aDefault
Значение по умолчанию. Оно будет возвращено в том случае, если указанный атрибут не задан.

Возвращаемое значение

Значение указанного атрибута в виде целого числа или значение параметра aDefault, если атрибут не задан.

Примечания

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


Метод GetVarAttr (Объект IXmlNode)

Получить значение указанного атрибута.

Синтаксис

function GetVarAttr(const aName: TXmlString; const aDefault: Variant): Variant; overload;
function GetVarAttr(aNameID: Integer; const aDefault: Variant): Variant; overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aDefault
Значение по умолчанию. Оно будет возвращено в том случае, если указанный атрибут не задан.

Возвращаемое значение

Значение указанного атрибута или значение параметра aDefault, если атрибут не задан.


Метод InsertBefore (Объект IXmlNode)

Вставить дочерний узел перед другим дочерним узлом.

Синтаксис

procedure InsertBefore(const aChild, aBefore: IXmlNode);

Параметры

aChild
Узел, который необходимо вставить. Создавать новые узлы можно при помощи методов CreateXXX объекта IXmlDocument.
aBefore
Узел, перед которым должен расположиться добавляемый узел.

Примечания

Если необходимо добавить узел в конец списка дочерних узлов, используйте метод AppendChild.


Свойство Count (Объект IXmlNodeList)

Возвращает количество элементов в списке.

Синтаксис

property Count: Integer;

Значение

Количество элементов списка.


Свойство Item (Объект IXmlNodeList)

Получение элемента списка.

Синтаксис

property Item[anIndex: Integer]: IXmlNode; default;

Параметры

anIndex
Порядковый номер элемента списка (нумерация элементов начинается с нуля).

Значение

Элемент списка.

См.также

IXmlNode


Свойство XML (Объект IXmlNodeList)

Получение XML, составленного из XML всех элементов списка.

Синтаксис

property XML: TXmlString;


Свойство NameTable (Объект IXmlNode)

Получить таблицу имен, использующуюся для работы с названиями элемента и его атрибутов.

Синтаксис

property NameTable: IXmlNameTable;

Значение

Объект IXmlNameTable

См.также

IXmlNameTable


Метод NeedAttr (Объект IXmlNode)

Получить значение атрибута в строковом виде.

Синтаксис

function NeedAttr(const aName: TXmlString): TXmlString; overload;
function NeedAttr(aNameID: Integer): TXmlString; overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.

Возвращаемое значение

Строковое значение атрибута.

Примечания

Атрибут обязательно должен быть задан. В противном случае будет сгенерировано исключение.


Метод NeedEnumAttr (Объект IXmlNode)

Получить значение атрибута в виде индекса одного из предопределенных строковых значений.

Синтаксис

function NeedEnumAttr(const aName: TXmlString;
    const aValues: array of TXmlString): Integer; overload;
function NeedEnumAttr(aNameID: Integer;
    const aValues: array of TXmlString): Integer; overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aValues
Перечень всех допустимых значений атрибута.

Возвращаемое значение

Индекс одного из предопределенных строковых значений из массива aValues.

Примечания

Если атрибут не задан или его значение не содержится в списке aValues, будет сгенерировано исключение.

При поиске значения в списке учитывается регистр букв.


Свойство NodeName (Объект IXmlNode)

Получить название узла.

Синтаксис

property NodeName: TXmlString;

Значение

Название узла. Зависит от типа узла:

Тип | Значение
Секция CDATA | #cdata-section.
Комментарий | #comment
Документ | #document
Элемент | Название элемента.
Управляющая инструкция | Название управляющей инструкции.
Текст | #text

См.также

NodeType


Свойство NodeNameID (Объект IXmlNode)

Получить идентификатор названия узла.

Синтаксис

property NodeNameID: Integer;

См.также

NodeName


Свойство NodeType (Объект IXmlNode)

Получить тип узла.

Синтаксис

property NodeType: Integer;

Значение

Может принимать следующие значения:

Значение Описание
NODE_CDATA_SECTION Секция CDATA.

Пример XML: <![CDATA[здесь любой текст]]>

Секции CDATA используются для обрамления текста, который может содержать символы разметки. Узел CDATA не может содержать дочерних узлов. Может быдь дочерним узлом только для узлов Элемент.

NODE_COMMENT Комментарий.

Пример XML: <!-- комментарий -->

Узел Комментарий не может содержать дочерних узлов. Может встречаться только внутри узлов Документ и Элемент.

NODE_DOCUMENT Узел документа, является корневым узлом для всей иерархии документа.

Узел Документ может содержать следующие дочерние узлы: Элемент (не больее одного), УправляющаяИнструкция, и Комментарий. Он не может встречаться в качестве дочернего узла.

NODE_ELEMENT Элемент.

Пример XML: <item> Узел Элемент может содержать следующие дочерние узлы: Элемент, Текст, Комментарий, УправляющаяИнструкция и CDATA. Может являться дочерним узлом для: Документ и Элемент.

NODE_PROCESSING_INSTRUCTION Управляющая инструкция.

Пример XML: <?pi test?>

Узел УправляющаяИнструкция не может содержать дочерние узлы. Может выступать в качестве дочернего у узлов Документ и Элемент.

NODE_TEXT Текстовое содержимое узла.

Узел Текст не может иметь дочерних узлов. Может быть дочерним узлом только для узлов Элемент.


Свойство OwnerDocument (Объект IXmlNode)

Получить объект IXmlDocument в иерархии которого расположен данный узел.

Синтаксис

property OwnerDocument: IXmlDocument;

Значение

Объект IXmlDocument, в иерархии которого расположен данный узел.


Свойство ParentNode (Объект IXmlNode)

Получить родительский узел.

Синтаксис

property ParentNode: IXmlNode;

Значение

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


Метод RemoveAllAttrs (Объект IXmlNode)

Удалить все атрибуты узла.

Синтаксис

procedure RemoveAllAttrs;


Метод RemoveAllChilds (Объект IXmlNode)

Удалить все дочерние узлы.

Синтаксис

procedure RemoveAllChilds;

Примечания

Удаление всех узлов не влияет на собственное значение узла TypedValue, то есть оно остается неизменным.


Метод RemoveAttr (Объект IXmlNode)

Удалить указанный атрибут.

Синтаксис

procedure RemoveAttr(const aName: TXmlString); overload;
procedure RemoveAttr(aNameID: Integer); overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.


Метод RemoveChild (Объект IXmlNode)

Удалить узел из списка дочерних узлов.

Синтаксис

procedure RemoveChild(const aChild: IXmlNode);

Параметры

aChild
Узел, который должен быть удален из списка дочерних узлов.


Метод ReplaceChild (Объект IXmlNode)

Заменить один из дочерних элементов на новый.

Синтаксис

procedure ReplaceChild(const aNewChild, anOldChild: IXmlNode);

Параметры

aNewChild
Данный узем будет помещен в список дочерних элементов в ту позицию, где до этого находился узел anOldChild.
anOldChild
Узел, в позицию которого будет помещен другой узел. После замещения узел anOldNode уже не будет присутствовать в списке дочерних узлов.


Метод SelectNodes (Объект IXmlNode)

Найти все дочерние элементы с указанным названием.

Синтаксис

function SelectNodes(const anExpression: TXmlString): IXmlNodeList;

Параметры

anExpression
Название дочерних элементов.

Возвращаемое значение

Объект {IXmlNodeList} - содержит список всех найденных элементов.

Примечания

При поиске анализируется только собственный список дочерних узлов, без обхода дерева вглубь.

Если ни одного элемента не будет найдено, то будет возвращен пустой список.

Возможно, в будущем будет реализована поддержка языка запросов XPath. Пока же параметр anExpression должен содержать только название дочерних элементов.


Метод SelectSingleNode (Объект IXmlNode)

Найти дочерний элемент с указанным названием.

Синтаксис

function SelectSingleNode(const anExpression: TXmlString): IXmlNode;

Параметры

anExpression
Название дочернего элемента, который нужно найти.

Примечания

При поиске анализируется только собственный список дочерних узлов, без обхода дерева вглубь.

Если ни одного элемента не будет найдено, то будет возвращен nil.

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

Возможно, в будущем будет реализована поддержка языка запросов XPath. Пока же параметр anExpression должен содержать только название дочерних элементов.


Метод SetAttr (Объект IXmlNode)

Задать строковое значение атрибута.

Синтаксис

procedure SetAttr(const aName, aValue: TXmlString); overload;
procedure SetAttr(aNameID: Integer; const aValue: TXmlString); overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aValue
Значение атрибута.

Примечания

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


Метод SetBoolAttr (Объект IXmlNode)

Задать логическое значение атрибута.

Синтаксис

procedure SetBoolAttr(const aName: TXmlString; aValue: Boolean); overload;
procedure SetBoolAttr(aNameID: Integer; aValue: Boolean = False); overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aValue
Значение атрибута.

Примечания

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


Метод SetChildText (Объект IXmlNode)

Изменить значение текста указанного дочернего элемента.

Синтаксис

procedure SetChildText(const aName, aValue: TXmlString); overload;
procedure SetChildText(aNameID: Integer; const aValue: TXmlString); overload;

Параметры

aName
Название дочернего элемента.
aNameID
Код названия дочернего элемента. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aValue
Новое значение текста, на которое нужно заменить текст указанного элемента.

Примечания

Если список дочерних элементов не содержит элементов с указанным названием, то такой элемент будет создан и добавлен в конец списка дочерних элементов.

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

Если список дочерних узлов содержит несколько элементов с указанным названием, то замена текста будет произведена только у самого первого элемента с таким именем.


Метод SetFloatAttr (Объект IXmlNode)

Задать значение атрибута в виде вещественного числа.

Синтаксис

procedure SetFloatAttr(const aName: TXmlString; aValue: Double); overload;
procedure SetFloatAttr(aNameID: Integer; aValue: Double); overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aValue
Значение атрибута.

Примечания

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


Метод SetHexAttr (Объект IXmlNode)

Задать значение атрибута в виде строкового представления целого числа в шестнадцатеричном виде.

Синтаксис

procedure SetHexAttr(const aName: TXmlString; aValue: Integer; aDigits: Integer = 8); overload;
procedure SetHexAttr(aNameID: Integer; aValue: Integer; aDigits: Integer = 8); overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aValue
Значение атрибута.
aDigits
Количество знаков в шестнадцатеричном представлении.

Примечания

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


Метод SetIntAttr (Объект IXmlNode)

Задать целочисленное значение атрибута.

Синтаксис

procedure SetIntAttr(const aName: TXmlString; aValue: Integer); overload;
procedure SetIntAttr(aNameID: Integer; aValue: Integer); overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aValue
Значение атрибута.

Примечания

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


Метод SetVarAttr (Объект IXmlNode)

Задать значение указанного атрибута.

Синтаксис

procedure SetVarAttr(const aName: TXmlString; aValue: Variant); overload;
procedure SetVarAttr(aNameID: Integer; const aValue: Variant); overload;

Параметры

aName
Название атрибута.
aNameID
Код названия атрибута. Код должен быть получен из таблицы имен документа, к которому относится данный элемент.
aValue
Значение атрибута.

Примечания

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

Значения атрибутов хранятся не в виде строк, а в виде переменных Variant.


Свойство Text (Объект IXmlNode)

Получает или изменяет объединенные значения узла и всех его дочерних узлов.

Синтаксис

property Text: TXmlString;

Значение

Объединенные значения узла и всех его дочерних узлов.

Примечания

Изменение этого свойства приведет к тому, что все внутреннее содержимое данного узла будет уничтожено, а собственное значение TypedValue будет установлено в заданный текст.

Для листовых узлов Text возвращает то же самое значение, что и свойство TypedValue.


Свойство TypedValue (Объект IXmlNode)

Получает собственное значение узла.

Синтаксис

property TypedValue: Variant;

Значение

Собственное значение узла.


Свойство XML (Объект IXmlNode)

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

Синтаксис

property XML: TXmlString;

Значение

Текстовое представление узла и всех вложенных узлов в формате XML.