Еще раз всем спасибо. Попробовал оба предложенных здесь способа - оба рабочие!
Ad Widget
Collapse
Конвертация XML в JSON в правиле обнаружения
Collapse
X
-
UP
в версии 5.4 добавят: «New JavaScript object XML has been added to provide an ability to extract data by XPath and convert XML to JavaScript object (JSON) and vice versa.»Comment
-
Подшаманил вариант Олега:
Первая строка определяет из каких элементов забирать данные, вторая - в какие макросы пихать. XML-элементы перечислены в том порядке, в котором они встречаются в родительском элементе. Иначе работать не будет.Code:const re = /<meetingName>(.*)<\/meetingName>[\s\S]*?<meetingID>(\w+)<\/meetingID>[\s\S]*?<isBreakout>(\w+)<\/isBreakout>/g; const fmt = '{"{#NAME}": "$1", "{#ID}": "$2", "{#ISBREAKOUT}": $3}'; var lld = '['; var data = value.match(re); if (data) { lld += data.toString().replace(re,fmt); } lld += ']'; return lld;
Так же добавлена защита от вылета правила LLD при отсутствии набора XML-элементов - например, когда контролируемые объекты не всегда присутствуют в общем XML-дереве.
Пример.
Исходник:
Результат:Code:<response> <returncode>SUCCESS</returncode> <meetings> <meeting> <meetingName>Конференция #1</meetingName> <meetingID>cmw0lhe79xparxkg</meetingID> <maxUsers>0</maxUsers> <moderatorCount>1</moderatorCount> <isBreakout>false</isBreakout> </meeting> <meeting> <meetingName>Конференция #2</meetingName> <meetingID>nclc8bamjlhscykrhenwkkm4</meetingID> <maxUsers>0</maxUsers> <moderatorCount>1</moderatorCount> <isBreakout>false</isBreakout> </meeting> </meetings> </response>
Code:[ { "{#NAME}": "Конференция #1", "{#ID}": "cmw0lhe79xparxkg", "{#ISBREAKOUT}": false }, { "{#NAME}": "Конференция #2", "{#ID}": "nclc8bamjlhscykrhenwkkm4", "{#ISBREAKOUT}": false } ]Comment
Comment