ЗаписьXML.НайтиПрефикс

Методы · LookupPrefix

Осуществляет поиск префикса для указанного URI пространства имен.

Синтаксис

НайтиПрефикс(<URIПространстваИмен>)
Полное описание, параметры и ограничения

ЗаписьXML.НайтиПрефикс (XMLWriter.LookupPrefix)

ЗаписьXML (XMLWriter)

НайтиПрефикс (LookupPrefix)

Доступен, начиная с версии 8.1.

Синтаксис:
НайтиПрефикс(<URIПространстваИмен>)
Параметры:

<URIПространстваИмен> (обязательный)
Тип: Строка.
URI пространства имен, для которого необходимо найти префикс.
Возвращаемое значение:
Тип: Строка, Неопределено.
Если префикс не обнаружен (соответствие URI пространства имен не было записано), возвращается Неопределено.
Описание:

Осуществляет поиск префикса для указанного URI пространства имен.

Доступность:

Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Префикс должен быть поставлен в соответствие указанному пространству имен при помощи методов ЗаписьXML.ЗаписатьСоответствиеПространстваИмен или ЗаписьXML.ЗаписатьАтрибут.
Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Записать и прочитать XML с пространством имён

Префикс p — сокращение, URI urn:amadesk:products — настоящее имя пространства. Для поиска проверяем URI и локальное имя.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Серверный контекст, документ формируется в памяти.

  2. URI здесь — идентификатор учебного формата, а не адрес, на который будет выполнен сетевой запрос.

URI = "urn:amadesk:products";
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Попытка
    Запись.ЗаписатьНачалоЭлемента("p:product");
    Запись.ЗаписатьСоответствиеПространстваИмен("p", URI);
    Запись.ЗаписатьАтрибут("code", "A-01");
    Запись.ЗаписатьАтрибут("p:status", "active");
    Сообщить(Запись.НайтиПрефикс(URI));
    Запись.ЗаписатьНачалоЭлемента("p:name");
    Запись.ЗаписатьТекст("Книга");
    Запись.ЗаписатьКонецЭлемента();
    Запись.ЗаписатьКонецЭлемента();
    ТекстXML = Запись.Закрыть();
Исключение
    Запись.Закрыть();
    ВызватьИсключение;
КонецПопытки;
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(ТекстXML);
Попытка
    Пока Чтение.Прочитать() Цикл
        Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента
                И Чтение.URIПространстваИмен = URI
                И Чтение.ЛокальноеИмя = "product" Тогда
            Сообщить(Чтение.Имя);
            Сообщить(Чтение.Префикс);
            Сообщить(Чтение.ЗначениеАтрибута("status", URI));
            Для Номер = 0 По Чтение.КоличествоАтрибутов() - 1 Цикл
                Сообщить(Чтение.ЛокальноеИмяАтрибута(Номер));
                Сообщить(Чтение.URIПространстваИменАтрибута(Номер));
                Сообщить(Чтение.ПрефиксАтрибута(Номер));
                Сообщить(Чтение.ТипАтрибута(Номер));
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
Исключение
    Чтение.Закрыть();
    ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();

Разбор по шагам

  1. Создаём имя p:product и объявляем соответствие префикса p пространству URI.

  2. Непрефиксный code не принадлежит этому пространству; p:status принадлежит.

  3. При чтении сравниваем ЛокальноеИмя и URIПространстваИмен, не только текст p:product.

  4. Для атрибутов смотрим локальное имя, URI и префикс по индексу.

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

  1. НайтиПрефикс выдаёт p; значение атрибута status в заданном URI — active.

  2. Согласованно замените префикс p на item при записи: проверка по URI и локальному имени продолжит находить товар.

Ожидаемый результат

Товар найден независимо от выбранного сокращения пространства имён.

На что обратить внимание

  1. Порядок аргументов ЗначениеАтрибута здесь: локальное имя, URI. У DOM аналогичный метод может принимать URI раньше имени.

  2. Пространство по умолчанию для элементов не распространяется автоматически на непрефиксные атрибуты.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.