我的输入XMl是
<?xml version="1.0" encoding="UTF-8"?>
<DEBMAS01>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
<DIRECT>2</DIRECT>
<IDOCTYP>DEBMAS01</IDOCTYP>
<MESTYP>DEBMAS</MESTYP>
<SNDPOR>MULESOFT</SNDPOR>
<SNDPRT>LS</SNDPRT>
<SNDPRN>MULESOFT</SNDPRN>
<RCVPOR>MULESOFT</RCVPOR>
<RCVPRT>LS</RCVPRT>
<RCVPRN>MULESOFT</RCVPRN>
</EDI_DC40>
<E1KNA1M SEGMENT="1">
<MSGFN>005</MSGFN>
<KUNNR>0000099500</KUNNR>
<KTOKD>ZAG2</KTOKD>
<LAND1>SK</LAND1>
<NAME1>Mulesoft 99003 2nd</NAME1>
<SPRAS>E</SPRAS>
<SPRAS_ISO>EN</SPRAS_ISO>
</E1KNA1M>
我的预期输出XML是
<?xml version="1.0" encoding="UTF-8"?>
<DEBMAS01>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
<DIRECT>2</DIRECT>
<IDOCTYP>DEBMAS01</IDOCTYP>
<MESTYP>DEBMAS</MESTYP>
<SNDPOR>PROJECT1</SNDPOR>
<SNDPRT>LS</SNDPRT>
<SNDPRN>MULESOFT</SNDPRN>
<RCVPOR>MULESOFT</RCVPOR>
<RCVPRT>LS</RCVPRT>
<RCVPRN>MULESOFT</RCVPRN>
</EDI_DC40>
<E1KNA1M SEGMENT="1">
<MSGFN>005</MSGFN>
<KUNNR>0000099500</KUNNR>
<KTOKD>ZAG2</KTOKD>
<LAND1>SK</LAND1>
<NAME1>Mulesoft 99003 2nd</NAME1>
<SPRAS>E</SPRAS>
<SPRAS_ISO>EN</SPRAS_ISO>
</E1KNA1M>
这里我只想将SNDPOR标签中的字符串从“MULESOFT”替换为“PROJECT1”。我使用XSLT实现了这一点。但现在我想使用Dataweave脚本实现这一目标。请帮助。
答案 0 :(得分:0)
完成文档后找到解决方案。感谢Rocco对我有所启发。 解决方案是
%dw 1.0
%output application/xml
---
DEBMAS01 :{(payload map {
IDOC @(BEGIN:payload.DEBMAS01.IDOC.@BEGIN):{
EDI_DC40 @(SEGMENT:payload.DEBMAS01.IDOC.EDI_DC40.@SEGMENT):payload.DEBMAS01.IDOC.EDI_DC40 mapObject {
"$$" : $ unless "$$" ~="SNDPOR" otherwise "PROJECT1"
},
E1KNA1M @(SEGMENT:payload.DEBMAS01.IDOC.E1KNA1M.@SEGMENT):payload.DEBMAS01.IDOC.E1KNA1M mapObject {
"$$": $
}
}
})
}