|
Загрузка из XML | ☑ | ||
---|---|---|---|---|
0
Bumerang
25.06.14
✎
14:23
|
Всем добрый день!
Есть файл выгрузки из базы SQL в формате xml Делаю загрузку этого файла. Но дело в том, что при проверке условия ТипУзлаXML.КонецЭлемента оно выполняется 2 раза Вот код: Пока ЧтениеXML.Прочитать() Цикл Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда ЧтениеXML.ПрочитатьАтрибут(); Атрибут = ЧтениеXML.Значение; ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда Если Атрибут = "client" Тогда СЗ.Добавить(ЧтениеXML.Значение); КонецЕсли; Если Атрибут = "phone" Тогда СЗ.Добавить(ЧтениеXML.Значение); КонецЕсли; Если Атрибут = "serviceman" Тогда СЗ.Добавить(ЧтениеXML.Значение); КонецЕсли; ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента и Атрибут = "serviceman" Тогда СЗ.Очистить(); КонецЕсли; КонецЦикла; Вот запись таблицы из файла <!-- Таблица orders --> <table name="orders"> <column name="id">1</column> <column name="client">Вася</column> <column name="phone">123456789</column> <column name="goods">Монитор LG M228WA</column> <column name="serial"></column> <column name="complectation"></column> <column name="priority">medium</column> <column name="status">complete</column> <column name="defects">Монитор-не включается</column> <column name="save_date">1351598257</column> <column name="complete_date">0</column> <column name="serviceman">Стас</column> </table> Подскажите, что сделано не верно. В какую сторону смотреть |
|||
1
Wobland
25.06.14
✎
14:24
|
а что не так?
|
|||
2
Wobland
25.06.14
✎
14:26
|
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ЧтениеXML.ПрочитатьАтрибут(); Атрибут = ЧтениеXML.Значение; а какой из двух тысяч атрибутов тут имеется в виду? |
|||
3
Bumerang
25.06.14
✎
14:28
|
(1) Дело в том, что условие
ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента и Атрибут = "serviceman" выполняется 2 раза, т.е. список значений СЗ заполняется, пото проверяется условие на КонецЭлемента СЗ очищается, потом повторно выполняется условие на конецЭлемента и опять очищается список СЗ, хотя он уже очищен. |
|||
4
Wobland
25.06.14
✎
14:28
|
(3) атрибут присваивай правильно
|
|||
5
Bumerang
25.06.14
✎
14:41
|
(4) А как правильно? Присваивать в цикле?
|
|||
6
Рэйв
25.06.14
✎
14:47
|
(4)
//------- Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл(ПутьКФайлу); Пока Чтение.Прочитать() Цикл // Прочитать "структурные части" элементов. // Проверить, какая часть элемента - текущая. Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда ИмяУзла = Чтение.Имя; Сообщить("--" + ИмяУзла); // Атрибуты элементов можно читать только если текущая часть - // начало элемента Пока Чтение.ПрочитатьАтрибут() Цикл // Прочитать данные узла атрибута. ТипУзла = Чтение.ТипУзла; Имя = Чтение.Имя; Значение = Чтение.Значение; // Обработать полученные значения. КонецЦикла; ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда // В примере просто выводим текст в окно сообщений. Сообщить("Текст:" + Чтение.Значение); ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда // В примере просто выводим признак конца элемента // в окно сообщений Сообщить("--Конец:" + Чтение.Имя); КонецЕсли; КонецЦикла; (C)Габец. //-------- купи себе уже книжку. |
|||
7
Wobland
25.06.14
✎
14:48
|
(5) откуда ж я знаю, зачем ты наполняешь СЗ, чтобы потом его почистить
|
|||
8
Рэйв
25.06.14
✎
14:48
|
(6) к (5)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |