|
ЧтениеXML - как прочитать только нужные узлы? |
☑ |
0
RomaH
naïve
05.04.19
✎
07:05
|
1С рекомендует читать не весь файл в объект XDTO, а постепенно
ок, в файле имеем список
<patients>
<patient...
<patient...
<patient...
<patient...
<patient...
как прочитать только узлы patient?
если Пропустить() - то не догоняю как его в цикле использовать
Пока ЧтениеХМЛ.Прочитать() Цикл
Если ЧтениеХМЛ.ЛокальноеИмя = "patient" Тогда
Данные = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ,лТип);
ЧтениеХМЛ.Пропустить();
КонецЕсли;
КонецЦикла;
так перескакивает через одного
|
|
1
RomaH
naïve
05.04.19
✎
07:18
|
ЧтениеХМЛ.Пропустить(); - встает на конец элемента patient
а Прочитать() сразу за пропустить - переходит на третий элемент списка пропуская второй - т.е. с конца первого на начало третьего
|
|
2
RomaH
naïve
05.04.19
✎
07:43
|
чем дальше в лес тем гуще партизаны
Пока ЧтениеХМЛ.Прочитать() Цикл
Если ЧтениеХМЛ.ЛокальноеИмя = "patient" И ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Данные = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ,лТип);
Сообщить(Данные.surname);
КонецЕсли;
КонецЦикла;
читает через одного 1 - 3 - 5 и так до конца
|
|
3
RomaH
naïve
05.04.19
✎
07:46
|
не понял
Данные = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ,лТип);
делает с ЧтениеХМЛ тоже что и Прочитать()
|
|
4
RomaH
naïve
05.04.19
✎
07:54
|
как правильно написать тоже самое?
ВсегоПациентов = 0;
Пока ЧтениеХМЛ.Прочитать() Цикл
Пока ЧтениеХМЛ.ЛокальноеИмя = "patient" И ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента И ВсегоПациентов < 2000 Цикл
ВсегоПациентов = ВсегоПациентов + 1;
Данные = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ,лТип);
Сообщить(Данные.surname);
КонецЦикла;
КонецЦикла;
|
|
5
RomaH
naïve
05.04.19
✎
07:54
|
(4) этот код делает то что мне надо - создает объекты XDTO на для каждого элемента списка
|
|
6
Cyberhawk
05.04.19
✎
08:31
|
(4) от (2) ничем вроде не отличается. Походу у тебя кэш старого модуля обработки использовался, вот ты и подумал, что неправильно работает
|
|
7
Василий Алибабаевич
05.04.19
✎
09:01
|
(3) 100 пудов. Читает текущий и переходит к следующему. Различается только интерпретация прочитанного.
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой