Как удалить это из сообщения, которое я мог бы описать только как имена HTML, такие как & или <
Могу ли я сделать это без использования функции замены?
Пример сообщения:
{
"message": "Hello world & welcome"
}
Ожидаемый результат:
{
"message": "Hello world & welcome"
}
Решения в этой ссылке должны работать, однако обратите внимание, что первое использует фиксированный список объектов. Я написал решение, которое не требует исправления значений в коде. Кроме того, эти сценарии ожидают определенного формата ввода, который необходимо адаптировать к требованиям пользователя.
@karthik: Я попробовал второй подход. Это добавление объектов, а не удаление их.
К счастью, это были объекты XML. Итак, я воспользовался вашим решением @aled
Если вам повезет, это XML-объекты. Существует 5 объектов XML и сотни объектов HTML.
В настоящее время в DataWeave нет встроенной функции для разрешения объектов XML или HTML. Я написал чистое решение DataWeave, используя replace()
, где объекты не фиксированы в коде, что дает возможность изменять список объектов по мере необходимости. Этот подход также работает для любого произвольного списка строк, которые необходимо заменить. Небольшая хитрость заключается в том, чтобы использовать reduce()
для применения replace()
для каждой сущности, а не для накопления значений.
Также я использовал оператор обновления для обновления определенного ключа сообщения.
Скрипт:
%dw 2.0
output application/json
var xmlEntities = {
"&": "&",
"<": "<",
">": ">",
"'": "'",
""": "\""
}
fun replaceEntities(s: String, entities)=
entriesOf(entities) reduce ((item, acc = s) -> acc replace item.key with(item.value))
---
payload update {
case m at .message -> replaceEntities(m, xmlEntities)
}
Вход:
{
"message": "Hello world & welcome"
}
Выход:
{
"message": "Hello world & welcome"
}
Проверьте, помогает ли вам подход 2. help.salesforce.com/s/articleView?id=001116189&type=1 @Nadeem