|
8.2 УФ Чтение данных из xml файла | ☑ | ||
---|---|---|---|---|
0
Кукалёв Анатолий
21.03.12
✎
04:25
|
Сервер возвращает данные вида:
<?xml version="1.0" encoding="UTF-8"?> <request> <message id="1">ТекстСообщения</message> <message id="2">Ошибка</message> <message id="3">ТекстСообщения</message> ... </request> 1) Как проверить, что имеется блок "request" ? 2) При положительном ответе на 1) как пройтись по всем блокам "message" получив значение "id" и "ТекстСообщения" ? |
|||
1
0xFFFFFF
21.03.12
✎
06:57
|
ЧтениеХМЛ = Новый ЧтениеXML;
ЧтениеХМЛ.ОткрытьФайл(ИмяФайла); Пока ЧтениеХМЛ.Прочитать() Цикл Если ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Если (ЧтениеХМЛ.Имя = "request") Тогда Пока ЧтениеХМЛ.Прочитать() Цикл Если (ЧтениеХМЛ.Имя = "message") Тогда id = ЧтениеХМЛ.ПолучитьАтрибут("id"); КонецЕсли; Если ЧтениеХМЛ.ТипУзла = ТипУзлаXML.КонецЭлементаТогда Прервать;//закончился узел с данными документа КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла; Как то так |
|||
2
0xFFFFFF
21.03.12
✎
06:59
|
Ну а для "ТекстСообщения", "Ошибка" - нужно вроде юзать
ЧтениеХМЛ.Значение Для соответствующего элемента |
|||
3
Кукалёв Анатолий
21.03.12
✎
13:50
|
ЧтениеХМЛ = Новый ЧтениеXML;
ЧтениеХМЛ.ОткрытьФайл(ИмяФайла); Пока ЧтениеХМЛ.Прочитать() Цикл Если ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Если ЧтениеХМЛ.Имя = "request" Тогда Пока ЧтениеХМЛ.Прочитать() Цикл Если ЧтениеХМЛ.Имя = "message" И ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда mid = ЧтениеХМЛ.ПолучитьАтрибут("id"); mtxt = ЧтениеХМЛ.Значение; ДокТест.ДобавитьСтроку("id:"+mid+", txt:"+mtxt+"."); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла; mid - все получает, а вот mtxt - всегда пустое значение. Что не так ? |
|||
4
GenV
21.03.12
✎
14:04
|
(3) Что бы прочитать значение нужно добавить еще внутренний цикл с Прочитать() (завершение по получение конца элемента "request") и сравнением ЧтениеХМЛ.ТипУзла = ТипУзлаXML.Текст, тогда можно получать значение
|
|||
5
GenV
21.03.12
✎
14:10
|
4+ можно и проще, если использовать ПрочитатьXML(ЧтениеХМЛ, Тип("Строка"))
|
|||
6
Кукалёв Анатолий
21.03.12
✎
14:27
|
Сделал так, все получает даже если сообщение пустое:
ЧтениеХМЛ = Новый ЧтениеXML; ЧтениеХМЛ.ОткрытьФайл(ИмяФайла); Пока ЧтениеХМЛ.Прочитать() Цикл Если ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Если ЧтениеХМЛ.Имя = "request" Тогда Пока ЧтениеХМЛ.Прочитать() Цикл Если ЧтениеХМЛ.Имя = "message" И ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда mid = ЧтениеХМЛ.ПолучитьАтрибут("id"); ЧтениеХМЛ.Прочитать(); mtxt = ЧтениеХМЛ.Значение; ДокТест.ДобавитьСтроку("id:"+mid+", txt:"+mtxt+"."); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла; |
|||
7
Кукалёв Анатолий
21.03.12
✎
14:27
|
Спасибо всем
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |