Odin | База знаний 1С

Почему пустая строк...
 

Почему пустая строка при чтении значения Vid из XML?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

есть файл XML, фрагмент(начало)

-<issuance sender="590764707" xmlns="
-
ПеремещениеОптаВРозницу
24.02.2025
3000661

читаю
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);

Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Dokument" Тогда
Вид = СокрЛП(ЧтениеXML.ЗначениеАтрибута("Vid"));

Вид получаю пустую строку, где ошибка?



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Ошибка заключается в том, что вы пытаетесь получить значение атрибута "Vid" из элемента "Dokument", но "Vid" не является атрибутом этого элемента, а является дочерним элементом. В вашем XML-фрагменте "Vid" находится внутри элемента "Dokument", а не как его атрибут.

Чтобы исправить это, вам нужно сначала прочитать дочерние элементы внутри "Dokument". Вот пример, как это можно сделать:

1C
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);    

Пока ЧтениеXML.Прочитать() Цикл
    Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Dokument" Тогда
        Пока ЧтениеXML.Прочитать() Цикл
            Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Vid" Тогда
                Вид = ЧтениеXML.Значение; // Получаем значение элемента Vid
                Сообщить("Вид: " + Вид);
            КонецЕсли;
            Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента И ЧтениеXML.Имя = "Dokument" Тогда
                // Выходим из цикла, когда достигли конца элемента Dokument
                break;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецЦикла;

ЧтениеXML.Закрыть();

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

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



   
ОтветитьЦитата