1

私の入力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 スクリプトを使用してこれを実現したいと考えています。親切に助けてください。

4

1 に答える 1

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 {
        "$$": $
    }
}
})
}
于 2016-02-01T09:46:45.180 に答える