Получает количество элементов списка.
Синтаксис
Количество()Полное описание, параметры и ограничения
СписокУзловDOM.Количество (DOMNodeList.Count)
СписокУзловDOM (DOMNodeList)
Количество (Count)
Доступен, начиная с версии 8.1.
Синтаксис:
Количество()
Возвращаемое значение:
Тип: Число.
Описание:
Получает количество элементов списка.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Вставить, заменить и удалить товар в DOM
Изменяем порядок дочерних узлов и различаем копию узла и тот же самый узел. Пользовательские данные служат локальной пометкой, не XML-атрибутом.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Выполняйте на сервере. Текст названия записывается непосредственно в product для компактности учебного документа.
Вставляемые и заменяемые узлы созданы одним документом; перенос между документами требует ИмпортироватьУзел.
Документ = Новый ДокументDOM("", "products");
Корень = Документ.ЭлементДокумента;
Первый = Документ.СоздатьЭлемент("product");
Первый.УстановитьАтрибут("code", "A-01");
Первый.ТекстовоеСодержимое = "Книга";
Корень.ДобавитьДочерний(Первый);
Последний = Документ.СоздатьЭлемент("product");
Последний.ТекстовоеСодержимое = "Ручка";
Корень.ДобавитьДочерний(Последний);
Вставленный = Документ.СоздатьЭлемент("product");
Вставленный.ТекстовоеСодержимое = "Тетрадь";
Корень.ВставитьПеред(Вставленный, Последний);
Копия = Первый.КлонироватьУзел(Истина);
Сообщить(Первый.УзелРавен(Копия));
Сообщить(Первый.УзелИдентичен(Копия));
Копия.ТекстовоеСодержимое = "Новая книга";
Удалённый = Корень.ЗаменитьДочерний(Копия, Первый);
Сообщить(Удалённый.РодительскийУзел = Неопределено);
Корень.УдалитьДочерний(Последний);
Вставленный.УстановитьПользовательскиеДанные("Проверено", Истина);
Сообщить(Вставленный.ПолучитьПользовательскиеДанные("Проверено"));
Сообщить(Корень.ПервыйДочерний.ТекстовоеСодержимое);
Сообщить(Корень.ПоследнийДочерний.ТекстовоеСодержимое);
Сообщить(Копия.СледующийСоседний.УзелИдентичен(Вставленный));
Сообщить(Вставленный.ПредыдущийСоседний.УзелИдентичен(Копия));
Сообщить(Вставленный.ДокументВладелец = Документ);
Узлы = Корень.ДочерниеУзлы;
Сообщить(Узлы.Количество());
Для Номер = 0 По Узлы.Количество() - 1 Цикл
Узел = Узлы.Элемент(Номер);
Сообщить(Узел.ИмяУзла + ": " + Узел.ТекстовоеСодержимое);
КонецЦикла;Разбор по шагам
Добавляем книгу и ручку, вставляем тетрадь перед ручкой.
Глубокая копия книги имеет одинаковое содержимое, но является другим узлом.
ЗаменитьДочерний возвращает удалённый старый узел; затем отдельно удаляем ручку.
Проверяем связи соседей и обходим оставшийся СписокУзловDOM по индексам.
Как проверить результат
Перед изменением копии УзелРавен даёт Истина, УзелИдентичен — Ложь.
После изменений остаются 2 узла: Новая книга, Тетрадь; у удалённой книги нет родителя.
Проверки соседей, владельца и пользовательской пометки дают Истина.
Ожидаемый результат
Дерево изменено осмысленно, различие между равенством содержимого и идентичностью узла показано явно.
На что обратить внимание
Список дочерних узлов отражает изменения дерева: при удалении во время обхода индексы смещаются.
УстановитьПользовательскиеДанные не создаёт атрибут и не является способом сохранить пометку в XML-файле.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Найти родителя и соседей товара в XML-дереве
Создаём products с двумя product и исследуем реальные связи. Показываем, что владелец документа и родительский узел — не одно и то же.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Документы и все узлы создаются в памяти на сервере. Внешние XML, DTD, сетевые схемы и файлы не загружаются.
Сначала оставьте учебные имена и значения неизменёнными. После контрольного запуска меняйте по одному условию.
Документ = Новый ДокументDOM("", "products");
Корень = Документ.ЭлементДокумента;
Для Номер = 1 По 2 Цикл
Товар = Документ.СоздатьЭлемент("product");
Товар.УстановитьАтрибут("code", ?(Номер = 1, "A-01", "B-02"));
Товар.ДобавитьДочерний(Документ.СоздатьТекстовыйУзел(?(Номер = 1, "Книга", "Ручка")));
Корень.ДобавитьДочерний(Товар);
КонецЦикла;
Первый = Корень.ПервыйДочерний;
Последний = Корень.ПоследнийДочерний;
Сообщить(Первый.ИмяУзла);
Сообщить(Первый.ИмяЭлемента);
Сообщить(Первый.ЛокальноеИмя);
Сообщить(Первый.Префикс);
Сообщить(Первый.URIПространстваИмен);
Сообщить(Первый.ТипУзла);
Сообщить(Первый.ТекстовоеСодержимое);
Сообщить(Первый.ДокументВладелец = Документ);
Сообщить(Первый.РодительскийУзел = Корень);
Сообщить(Первый.ПредыдущийСоседний = Неопределено);
Сообщить(Первый.СледующийСоседний = Последний);
Сообщить(Последний.ПредыдущийСоседний = Первый);
Сообщить(Последний.СледующийСоседний = Неопределено);
Сообщить(Корень.ДочерниеУзлы.Количество() = 2);
Сообщить(Корень.ДочерниеУзлы.Элемент(0) = Первый);
Если Первый.ЕстьАтрибуты() Тогда
Сообщить(Первый.Атрибуты.Количество());
КонецЕсли;
Сообщить(Первый.ЕстьДочерниеУзлы());
Сообщить(Первый.ПервыйДочерний = Первый.ПоследнийДочерний);Разбор по шагам
ЭлементДокумента — корневой элемент, а ПервыйДочерний/ПоследнийДочерний относятся к его непосредственным детям.
У первого product владелец — весь ДокументDOM, родитель — products. Это два разных объекта.
На краях списка соседей возвращается Неопределено; не обращаемся к его ИмяУзла.
product содержит атрибут code и один текстовый дочерний узел. Атрибуты находятся в отдельной коллекции, не в ДочерниеУзлы.
Как проверить результат
У первого узла имена product, текст Книга; число атрибутов равно 1.
Все контрольные сравнения связей дают Истина; у корня ровно два дочерних узла.
У product первый и последний ребёнок совпадают, поскольку текстовый ребёнок один.
Ожидаемый результат
Разобрана структура одного настоящего DOM-дерева с проверкой соседей, родителя и владельца.
На что обратить внимание
При чтении красиво оформленного XML между элементами могут появиться пробельные текстовые узлы. ПервыйДочерний не всегда является товаром.
Атрибут code не является отдельным дочерним элементом product.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.