Добрый день. Есть задача прочитать xml файл для последующей обработки его содержимого ( Файл xml примерно 300 000 строк, читать нужно каждый день)

Прочитал несколько статей по чтению xml, выбрал для себя одну из самых понятных https://infostart.ru/public/311011/ (Способ №5).

Для моего файла составил схему, проверил на валидность - все ок, работает, но есть одно Но...

Отрывок из схемы :
                          <xs:element type="xs:string" name="model"/>
                          <xs:element type="xs:string" name="mainImage" default="noimage"/>
                          <xs:element type="xs:byte" name="step_count" fixed="0" />
                          <xs:element type="xs:string" name="producer" />
Отрывок из xml:
                          <model>ПЭУ 003 Указательная стрелка (200х200) РС-M //комплект, 2шт.// MIZAR SI</model>
                          <mainImage>https://www.tesli.com/upload/iblock/7ff/93b8cf4d_6e69_11e5_8733_0cc47a13d3da.jpg</mainImage>;
                          <step_count>1</step_count>
                          <producer>Световые технологии</producer>
                          <vendorCode>2501002550</vendorCode>
                          <series>ПЭУ</series>
             ИЛИ
                          <model>ПЭУ 003 Указательная стрелка (200х200) РС-M //комплект, 2шт.// MIZAR SI</model>
                          <step_count>1</step_count>
                          <vendorCode>2501002550</vendorCode>
                          <series>ПЭУ</series>
Как видите любой (кроме model) элемент схемы может отсутствовать, что отрицательно сказывается на чтении XML (При чтении в отсутствующим элементе находится пустой объект)
Да, есть возможность проверить через объект ОбъектXDTO.Свойства присутствуют ли все свойства (кроме model) в объекте списка, НО это ужасно тормозит процесс чтения. Триста тысяч записей = больше миллиона проверок. В замере производительности проверки далеко обгоняют все остальные методы...
Вопрос возможно ли в схеме XSD как то задать "Значение по умолчанию" для элемента даже если его нет в строке последовательности?
Или есть более изящный метод избавится от такого количества проверок ?
---
Добрый день, спасибо за ответ попробую, когда в след. раз придется разбирать сложную схему. Пока нашел неочевидное решение:
Создавать фабрику XDTO без схемы XSD и при чтении заполнять не структуру конструкцией

```1c
    Если Объект.Получить(Объект.Свойства().ИскомоеСвойство) <> Неопределено Тогда ...
```

А заполнять ТЗ имеющую колонки с нужными мне свойствами, в начале цикла заполнять строку тч стандартными значениями свойств, а затем
```1c
    ЗаполнитьЗначенияСвойств(СтрокаТЗ,Объект)
```
.
Неочевидно, но по замеру производительности такой способ отрабатывает в 2 раза быстрее...
---
Попробуй использовать ПостроительDOM, ДокументDOM и ВычислитьВыражениеXPath. Возможно это будет быстрее.
---
Добрый день, спасибо за ответ попробую, когда в след. раз придется разбирать сложную схему. Пока нашел неочевидное решение:
Создавать фабрику XDTO без схемы XSD и при чтении заполнять не структуру конструкцией

```1c
    Если Объект.Получить(Объект.Свойства().ИскомоеСвойство) <> Неопределено Тогда ...
```

А заполнять ТЗ имеющую колонки с нужными мне свойствами, в начале цикла заполнять строку тч стандартными значениями свойств, а затем
```1c
    ЗаполнитьЗначенияСвойств(СтрокаТЗ,Объект)
```
.
Неочевидно, но по замеру производительности такой способ отрабатывает в 2 раза быстрее...
---
Похожий механизм используется для проверки наличия реквизита у объекта:

```1c
    Функция ЕстьРеквизитОбъекта(Объект, ИмяРеквизита)
    СлучайноеЗначение = Новый УникальныйИдентификатор();
    Буфер = Новый Структура(ИмяРеквизита, СлучайноеЗначение);
    ЗаполнитьЗначенияСвойств(Буфер, Объект);
    Возврат Буфер[ИмяРеквизита] <> СлучайноеЗначение;
    КонецФункции
```