我假设您的意思是在 yaml 映射器编解码器中,在这种情况下,您可以简单地引用键,这应该可以工作:
mapFrom:
- payload.xml: "payload.?xml"
- payload.version: "payload.@version.myField2"
- payload.xmlns_xsd: "payload.@xmlns:xsd"
如果您询问如何在 EPL 中声明事件以处理此响应,则无需在事件定义中使用确切的命名方案。你可以有:
event Response {
string xml;
string version;
string xmlns_xsd;
}
然后在两个字段之间使用映射器编解码器映射,如下所示:
mapFrom:
- payload.xml: "payload.?xml"
- payload.version: "payload.@version.myField2"
- payload.xmlns_xsd: "payload.@xmlns:xsd"
编辑
因此,停止事件解析的第一件事是您的响应不是有效的 JSON。“ArrayOfBusinessTypeAPI {”行需要是“”ArrayOfBusinessTypeAPI“:{”。您只能使用映射器编解码器来解析 JSON。
这不起作用的第二个原因是内容类型设置为 text/html。JSON 编解码器是否将 filterOnContentType 设置为 true?如果是这样,它不会转换此消息。
但是,如果 JSON 有效并由 JSON 编解码器处理,则可以正确映射事件,如下所示:
mapFrom:
- payload.id: metadata.requestId
- payload.xml: "payload.?xml"
- payload.version: "payload.xml.@version"
- payload.xsd: "payload.ArrayOfBusinessTypeAPI.@xmlns:xsd"
- payload.xsi: "payload.ArrayOfBusinessTypeAPI.@xmlns:xsi"
- payload.encoding: "payload.xml.@encoding"
映射到一个事件:
event Resp {
dictionary<string, string> xml;
string version;
string xsd;
}