Возможно ли скопировать содержимое XML из WebViewer

Практические советы по работе с FileMaker, типичные задачи и их решения. У вас вопрос? Пишите сюда.
Alexander Klochkov
Сообщения: 31
Зарегистрирован: 12 сен 2017, 04:14

Возможно ли скопировать содержимое XML из WebViewer

Сообщение Alexander Klochkov » 20 дек 2021, 13:51

Коллеги.
Приветствую!
Никто не сталкивался с таким вопросом?
Мне нужно скачать данные по валюте , например EUR, с сайта ЦБР. На их сайте есть образец запроса, по которому я могу получить данные в XML в webviewer.
Дальше хотел парсить выражение , которое даёт ЦБР по данному запросу и выуживать курс. Но никак не получается обработать содержимое WebViewer.
Может у кого-то есть решение по автоматизации скачивания курсов валюты?
В темах форума не нашёл.
Александр Клочков
Александр Клочков
apklotchkov@yahoo.com

Аватара пользователя
Nicolai Kant
Сообщения: 21
Зарегистрирован: 19 авг 2020, 19:16

Re: Возможно ли скопировать содержимое XML из WebViewer

Сообщение Nicolai Kant » 21 дек 2021, 11:01

Дайте название своему webviewer и попробуйте это:

GetLayoutObjectAttribute(objectName;"content")

Обычно это делается с помощью Insert from URL с использованием XSLT

Alexander Klochkov
Сообщения: 31
Зарегистрирован: 12 сен 2017, 04:14

Re: Возможно ли скопировать содержимое XML из WebViewer

Сообщение Alexander Klochkov » 21 дек 2021, 12:36

Николай. Спасибо! Попробую
Александр Клочков
apklotchkov@yahoo.com

Alexander Klochkov
Сообщения: 31
Зарегистрирован: 12 сен 2017, 04:14

Re: Возможно ли скопировать содержимое XML из WebViewer

Сообщение Alexander Klochkov » 21 дек 2021, 12:57

Николай.
С Inser from url получилось красивее.
Почти то же самое , что и в WebViewer.
Get object attributes тоже сработало, но там вываливается гораздо больше информации.
Ещё раз спасибо!
Александр Клочков
apklotchkov@yahoo.com

Alexander Klochkov
Сообщения: 31
Зарегистрирован: 12 сен 2017, 04:14

Re: Возможно ли скопировать содержимое XML из WebViewer

Сообщение Alexander Klochkov » 21 дек 2021, 14:09

Николай.
А нет на примете какой-нибудь customs function, с помощью которой можно выделить данные находящиеся между <value> и /<value>?
Александр Клочков
apklotchkov@yahoo.com

Alexander Klochkov
Сообщения: 31
Зарегистрирован: 12 сен 2017, 04:14

Re: Возможно ли скопировать содержимое XML из WebViewer

Сообщение Alexander Klochkov » 22 дек 2021, 07:36

Нашёл customs function
BetweenOpenCloseTag ( )

На сайте fmfunctions.com
Но что-то она не сработала.

Поэтому сделал сам.
В ближайшее время опишу весь процесс.
Александр Клочков
apklotchkov@yahoo.com

Аватара пользователя
Nicolai Kant
Сообщения: 21
Зарегистрирован: 19 авг 2020, 19:16

Re: Возможно ли скопировать содержимое XML из WebViewer

Сообщение Nicolai Kant » 22 дек 2021, 13:52

Большинство кастом функций XML которые я видел, извлекают только один тег с тем же именем, поэтому XSLT более надежен. Я использовал раньше функцию написанную Яном Джемпсоном. Дайте мне знать, если вам все еще она нужна.

Alexander Klochkov
Сообщения: 31
Зарегистрирован: 12 сен 2017, 04:14

Re: Возможно ли скопировать содержимое XML из WebViewer

Сообщение Alexander Klochkov » 23 дек 2021, 18:08

Николай.
Какая писал , проблему решил.
Но тем не менее всегда интересно изучить ещё более элегантные решения.
Если не трудно , пришлите пожалуйста .
Александр Клочков
apklotchkov@yahoo.com

Аватара пользователя
Nicolai Kant
Сообщения: 21
Зарегистрирован: 19 авг 2020, 19:16

Re: Возможно ли скопировать содержимое XML из WebViewer

Сообщение Nicolai Kant » 28 дек 2021, 17:58

Я не могу найти функцию Иана, поэтому переписал ее по памяти:

ExtractXMLTag (XML, Tag)

Код: Выделить всё

Let (
[
   openTag = "<" & Tag & ">";
   closeTag = "</" & Tag & ">";
   start  = Position ( XML ; openTag ; 1 ; 1 ) + Length ( openTag );
   end = Position ( XML ; closeTag ; 1 ; 1 );
   numberOfCharacters = end - start;
   result = Middle ( XML ; start ; numberOfCharacters )
]

 ; result )
Tag параметр использиет текст без шевронов, например: ExtractXMLTag ( table::xml_filed, "description")

Функция не проверяет правильность XML и игнорирует разницу между заглавными/строчными буквами тега.

Одна из проблем функции то что возвращается только первый тег - оригинал был написан для передачи нескольких параметров скрипта

В последних нескольких версиях ФМП можно использовать while для возврата нескольких тегов с одинаковым именем:

ExtractXMLTagM (XML, Tag)

Код: Выделить всё

Let (
[
openTag = "<" & Tag& ">";
closeTag = "</" & Tag& ">";
totalCount = PatternCount ( XML ; openTag );
result = While ( 
   [i=0;
   content = ""
   ] ;
   
   i < totalCount ;
   
[
i = i+1 ;
start  = Position ( XML ; openTag ; 1 ; i ) + Length ( openTag );
end = Position ( XML ; closeTag ; 1 ; i );
numberOfCharacters = end - start;
content = If ( i > 1 ; content & "¶") & Middle ( XML ; start ; numberOfCharacters )
]; 

   content )
]; 

result )

Alexander Klochkov
Сообщения: 31
Зарегистрирован: 12 сен 2017, 04:14

Re: Возможно ли скопировать содержимое XML из WebViewer

Сообщение Alexander Klochkov » 29 дек 2021, 19:35

Николай.
Спасибо большое . Изучаю.
Александр Клочков
apklotchkov@yahoo.com

Ответить