Парсинг XML через 1с

1. Nefilimus 75 04.01.20 19:00 Сейчас в теме +0.72 $m
Здравствуйте уважаемые программисты)

Стараюсь парсить XML файл Мне нужно получить только раздел USD.

На данный момент запрос выглядит вот так. Данные получает правильно. Но как получить эти данные отдельно, чтобы допустим name получить отдельно. И чтобы выводились только те, у кого в CODE прописан USD


	ЧтениеХМЛ = Новый ЧтениеXML;
	ЧтениеХМЛ.ОткрытьФайл("https://www.cbar.az/currencies/30.12.2019.xml");
	
	Пока ЧтениеХМЛ.Прочитать() Цикл
		
		Если ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеХМЛ.Имя = "ValType" Тогда
			продолжить;
		КонецЕсли;	
		
		
		
		Если ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеХМЛ.Имя = "Valute" Тогда
			ЧтениеХМЛ.ПрочитатьАтрибут();
			СтрокаОценка = "Valute: " + ЧтениеХМЛ.ЗначениеАтрибута("Code");
		КонецЕсли;
		Если ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеХМЛ.Имя = "Name" Тогда
			Сообщить(СтрокаОценка);
		КонецЕсли;
		
		//Если ЧтениеХМЛ.ЗначениеАтрибута("Code") = "USD"   Тогда 
		Если ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
			ИмяЭлемента = ЧтениеХМЛ.Имя;
		ИначеЕсли ЧтениеХМЛ.ТипУзла = ТипУзлаXML.Текст Тогда
			Сообщить(ИмяЭлемента + ": " + ЧтениеХМЛ.Значение);
		КонецЕсли;
		
		Если ЧтениеХМЛ.ТипУзла = ТипУзлаXML.КонецЭлемента И ЧтениеХМЛ.Имя = "АдресСайта" Тогда
			Сообщить("--------------------------------");
		КонецЕсли;
		//КонецЕсли;
	КонецЦикла;
	
	ЧтениеХМЛ.Закрыть();

Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
11. Nefilimus 75 05.01.20 03:29 Сейчас в теме
Пришлось использовать массивы
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. пользователь 04.01.20 20:46
Сообщение было скрыто модератором.
...
3. Fox-trot 158 04.01.20 21:21 Сейчас в теме
(2)
Если ЧтениеХМЛ.ЗначениеАтрибута("Code") <> "USD" Тогда Продолжить;
Nefilimus; +1 Ответить
4. Nefilimus 75 04.01.20 21:27 Сейчас в теме
(3)
Если ЧтениеХМЛ.ЗначениеАтрибута("Code") <> "USD" Тогда Продолжить;
И куда прописать? Я пробовал для каждого атрибута не помогло.
5. Fox-trot 158 04.01.20 21:47 Сейчас в теме
(4) для каждого не надо ))
Если ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеХМЛ.Имя = "Valute" Тогда
            ЧтениеХМЛ.ПрочитатьАтрибут();
            СтрокаОценка = "Valute: " + ЧтениеХМЛ.ЗначениеАтрибута("Code");
        КонецЕсли;

это ж проверка/чтение, следовательно сюда и надо вставить
Nefilimus; +1 Ответить
7. Nefilimus 75 04.01.20 21:55 Сейчас в теме
6. Fox-trot 158 04.01.20 21:50 Сейчас в теме
(4) если только USD, то видима нужно не Продолжить, а Прервать;
Nefilimus; +1 Ответить
8. Nefilimus 75 04.01.20 21:56 Сейчас в теме
(6) если прервать, то он может и не дойти до USD. Там перебор строк
9. Fox-trot 158 04.01.20 22:40 Сейчас в теме
(8) это если по-быстрому
Прикрепленные файлы:
ИмпортКурсовВалют_Азербайджан.epf
Nefilimus; +1 Ответить
10. Nefilimus 75 04.01.20 22:46 Сейчас в теме
(9) в таком случае сам курс не попадает...я уже пробовал
11. Nefilimus 75 05.01.20 03:29 Сейчас в теме
Пришлось использовать массивы
12. Xershi 1484 05.01.20 10:15 Сейчас в теме
(11) загугли бы как читать хмл и проблем не было.
На затравку схему хдто ещё надо.
Nefilimus; +1 Ответить
13. Nefilimus 75 06.01.20 03:18 Сейчас в теме
(12) хдто если использовать, это было бы вроде уже не просто обработкой, а мне нужно было клиенту сделать такое и заодно жадность вынудила сделать ее универсальной )) просто добавил и пользуйся))
14. Xershi 1484 06.01.20 11:14 Сейчас в теме
(13) со схемой как раз просто и универсально.
Nefilimus; +1 Ответить
15. Nefilimus 75 07.01.20 08:54 Сейчас в теме
(14) благодарю) учту на будущее
17. vsesam80 07.01.20 12:44 Сейчас в теме
(15)
Вот вам еще примерчик:
ДанныеXML = Новый ЧтениеXML;                    
    ДанныеXML.ОткрытьФайл("G:\Rabinovich\ДокXML.xml");
    ПостроительДом = Новый ПостроительDOM();
    ДанныеDOM = ПостроительДом.Прочитать(ДанныеXML);
    ДокРеалDOM = ДанныеDOM.ПолучитьЭлементыПоИмени("ДокРеал");
    Для Каждого ЭлементDOMДокРеал ИЗ ДокРеалDOM Цикл                                                             
        ОбработкаПрерыванияПользователя();
        Сообщить(ЭлементDOMДокРеал.ПолучитьАтрибут("Контрагент"));
        Сообщить(ЭлементDOMДокРеал.ПолучитьАтрибут("СуммаДокумента")); 
        ТоварыDOM = ДанныеDOM.ПолучитьЭлементыПоИмени("Товары");
        Для каждого СтрТовары Из ТоварыDOM Цикл             
        Сообщить(" "+СтрТовары.ПолучитьАтрибут("Номенклатура"));
        КонецЦикла;
    КонецЦикла; 
Показать
Nefilimus; +1 Ответить
16. vsesam80 07.01.20 12:37 Сейчас в теме
Вот богоугодная фигня
ДанныеXML = Новый ЧтениеXML;
    ДанныеXML.ОткрытьФайл(ПараметрыСеанса.ПутьКФайлуОбмена);
    ПостроительДом = Новый ПостроительDOM();
    ДанныеDOM = ПостроительДом.Прочитать(ДанныеXML);
    НоменклатураDOM = ДанныеDOM.ПолучитьЭлементыПоИмени("Номенклатура");//Тут ваше USD
    Для Каждого ЭлементDOMНоменклатура ИЗ НоменклатураDOM Цикл 
        СуществующийОбъектСправочника = ПроверитьЭлементСправочников(ЭлементDOMНоменклатура.ПолучитьАтрибут("Ссылка"),"Номенклатура");//Номенклатура - Название справочника
                                
        Если СуществующийОбъектСправочника=Ложь Тогда                                                         
        //Тогда чета там    
        ИначеЕсли СуществующийОбъектСправочника.Наименование <> ЭлементDOMНоменклатура.ПолучитьАтрибут("Наименование")  Тогда         
        //Тогда чёта там
        КонецЕсли; 
        
    КонецЦикла;
Показать
Nefilimus; +1 Ответить
18. Nefilimus 75 09.01.20 09:23 Сейчас в теме
(16) Спасибо святой человек =)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот