如何获取XML编码类型?

Séb*_*las 4 dataweave

我当前的有效载荷是(从POST接收)

<?xml version='1.0' encoding='ISO-8859-1'?>
<test>
</test>
Run Code Online (Sandbox Code Playgroud)

我想获取编码值(即ISO-8859-1

正确使用什么DataWeave表达式?

我已经测试过

var infos = payload.^mediaType splitBy "; "
var encoding = infos[1] splitBy  "="
---
media:
{ 
    mime: infos[0],
    encoding: encoding[1]
}
Run Code Online (Sandbox Code Playgroud)

但它返回我:

{
"mime": "application/xml",
"encoding": "UTF-8"
}
Run Code Online (Sandbox Code Playgroud)

似乎payload.^mediaType来自我的POST标头。

这是解决问题的方法:

%dw 2.0
output application/java
---
((payload.^raw as String) scan /encoding='([A-z0-9-]+)'/)[0][1]
Run Code Online (Sandbox Code Playgroud)

在提出的解决方案中,缺少^符号。

mac*_*val 8

可悲的是,没有优雅的方法可以做到这一点。我认为的唯一方法是使用正则表达式。

%dw 2.0
output application/java
---
((payload.^raw as String) scan /encoding='([A-z0-9-]+)'/)[0][1]
Run Code Online (Sandbox Code Playgroud)

这将返回编码。