如何替换 Dataweave Mule 4 中的反斜杠
How to replace backslash in Dataweave Mule 4
您好,我想用空字符替换反斜杠。
我的有效载荷是
{
"id" : 1234567,
"requestDate" : "2021/02/02",
"responseXML" : "<DRIVEResponse ResponseDateTime=\"2/15/2021 10:09:10 AM\" TimeZone=\"EST\">",
}
我尝试了一些方法,但似乎没有任何效果我不确定我做错了什么。
payload.responseXML replace "\" with ""
我的预期反应是
<DRIVEResponse ResponseDateTime="2/15/2021 10:09:10 AM" TimeZone="EST">
这就是您的 "" 在被 """.
包围的字符串中转义的方式
\"
在最终字符串中呈现为 "。请参阅下面的屏幕截图并注意 \"
在 [=19= 时如何不被替换]" 确实在句子中被替换了。
看起来错误是试图删除反斜线字符 (\
)。 JSON 转义字符需要转义 JSON 字符串中的双引号字符。请注意,responseXML 包含一个包含 XML 值的字符串作为其值。 XML 在属性值周围使用引号。表示 JSON 字符串中的唯一方法是转义。这是 JSON 标准定义的预期行为。除非您使用不兼容的 JSON 解析器处理它,否则应该没问题。如果在某些时候您需要将该字符串作为 XML 求值,结果 XML 将不会产生反冲。
例如,我将使用您的输入数据作为读取响应XML。但是请注意 XML 格式不正确,因为它缺少结束标记。我刚刚添加了一个正斜杠 (/
) 来关闭标签:
%dw 2.0
output application/xml
---
read(payload.responseXML,"application/xml")
输入负载:
{
"id" : 1234567,
"requestDate" : "2021/02/02",
"responseXML" : "<DRIVEResponse ResponseDateTime=\"2/15/2021 10:09:10 AM\" TimeZone=\"EST\" />"
}
输出:
<?xml version='1.0' encoding='UTF-8'?>
<DRIVEResponse ResponseDateTime="2/15/2021 10:09:10 AM" TimeZone="EST"/>
实际上还有一个选择。如果您可以控制 XML 的生成,则可以使用单引号。 XML 标准允许使用单引号或双引号。我不建议这样做。看起来它是为了隐藏其他组件中的问题。这对我来说是一种不好的做法。
您好,我想用空字符替换反斜杠。
我的有效载荷是
{
"id" : 1234567,
"requestDate" : "2021/02/02",
"responseXML" : "<DRIVEResponse ResponseDateTime=\"2/15/2021 10:09:10 AM\" TimeZone=\"EST\">",
}
我尝试了一些方法,但似乎没有任何效果我不确定我做错了什么。
payload.responseXML replace "\" with ""
我的预期反应是
<DRIVEResponse ResponseDateTime="2/15/2021 10:09:10 AM" TimeZone="EST">
这就是您的 "" 在被 """.
包围的字符串中转义的方式\"
在最终字符串中呈现为 "。请参阅下面的屏幕截图并注意 \"
在 [=19= 时如何不被替换]" 确实在句子中被替换了。
看起来错误是试图删除反斜线字符 (\
)。 JSON 转义字符需要转义 JSON 字符串中的双引号字符。请注意,responseXML 包含一个包含 XML 值的字符串作为其值。 XML 在属性值周围使用引号。表示 JSON 字符串中的唯一方法是转义。这是 JSON 标准定义的预期行为。除非您使用不兼容的 JSON 解析器处理它,否则应该没问题。如果在某些时候您需要将该字符串作为 XML 求值,结果 XML 将不会产生反冲。
例如,我将使用您的输入数据作为读取响应XML。但是请注意 XML 格式不正确,因为它缺少结束标记。我刚刚添加了一个正斜杠 (/
) 来关闭标签:
%dw 2.0
output application/xml
---
read(payload.responseXML,"application/xml")
输入负载:
{
"id" : 1234567,
"requestDate" : "2021/02/02",
"responseXML" : "<DRIVEResponse ResponseDateTime=\"2/15/2021 10:09:10 AM\" TimeZone=\"EST\" />"
}
输出:
<?xml version='1.0' encoding='UTF-8'?>
<DRIVEResponse ResponseDateTime="2/15/2021 10:09:10 AM" TimeZone="EST"/>
实际上还有一个选择。如果您可以控制 XML 的生成,则可以使用单引号。 XML 标准允许使用单引号或双引号。我不建议这样做。看起来它是为了隐藏其他组件中的问题。这对我来说是一种不好的做法。