如何在Mule Dataweave/Transform中映射SOAP请求

如何在Mule Dataweave/Transform中映射SOAP请求,soap,mule,transform,Soap,Mule,Transform,我在Mule 3.8.3上使用SOAP服务,遇到了一个我自己无法解决的场景。我有下面的流程可以直接向前看 SOAP请求看起来像: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:jcm="http://www.oracle.com/JCM"> <soapenv:Header/> <soapenv:Body> &l

我在Mule 3.8.3上使用SOAP服务,遇到了一个我自己无法解决的场景。我有下面的流程可以直接向前看

SOAP请求看起来像:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:jcm="http://www.oracle.com/JCM">
   <soapenv:Header/>
   <soapenv:Body>
      <jcm:GenericRequest webKey="cs">
         <jcm:Service ServiceId="GET_FILE">
            <jcm:Document>
               <!--Zero or more repetitions:-->
               <jcm:Field name="documentName">abcd.pdf</jcm:Field>
               <jcm:Field name="documentID">156</jcm:Field>
            </jcm:Document>
         </jcm:Service>
      </jcm:GenericRequest>
   </soapenv:Body>
</soapenv:Envelope>
Xml到Json 产生:

{
  "webKey": "cs",
  "serviceId": "GET_FILE",
  "documents": [
    {
      "documentName": "abcd.pdf",
      "documentID": "156"
    },
    {
      "documentName": "efgh.pdf",
      "documentID": "850"
    }
  ]
}
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header></soapenv:Header>
  <soapenv:Body>
    <jcm:GenericRequest xmlns:jcm="http://www.oracle.com/JCM" webkey="cs">
      <jcm:Service ServiceId="GET_FILE">
        <jcm:Document>
          <jcm:Field name="documentName">abcd.pdf</jcm:Field>
          <jcm:Field name="documentID">156</jcm:Field>
        </jcm:Document>
        <jcm:Document>
          <jcm:Field name="documentName">efgh.pdf</jcm:Field>
          <jcm:Field name="documentID">850</jcm:Field>
        </jcm:Document>
      </jcm:Service>
    </jcm:GenericRequest>
  </soapenv:Body>
</soapenv:Envelope>
Json到Xml 产生:

{
  "webKey": "cs",
  "serviceId": "GET_FILE",
  "documents": [
    {
      "documentName": "abcd.pdf",
      "documentID": "156"
    },
    {
      "documentName": "efgh.pdf",
      "documentID": "850"
    }
  ]
}
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header></soapenv:Header>
  <soapenv:Body>
    <jcm:GenericRequest xmlns:jcm="http://www.oracle.com/JCM" webkey="cs">
      <jcm:Service ServiceId="GET_FILE">
        <jcm:Document>
          <jcm:Field name="documentName">abcd.pdf</jcm:Field>
          <jcm:Field name="documentID">156</jcm:Field>
        </jcm:Document>
        <jcm:Document>
          <jcm:Field name="documentName">efgh.pdf</jcm:Field>
          <jcm:Field name="documentID">850</jcm:Field>
        </jcm:Document>
      </jcm:Service>
    </jcm:GenericRequest>
  </soapenv:Body>
</soapenv:Envelope>

abcd.pdf
156
efgh.pdf
850
Xml到Json 产生:

{
  "webKey": "cs",
  "serviceId": "GET_FILE",
  "documents": [
    {
      "documentName": "abcd.pdf",
      "documentID": "156"
    },
    {
      "documentName": "efgh.pdf",
      "documentID": "850"
    }
  ]
}
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header></soapenv:Header>
  <soapenv:Body>
    <jcm:GenericRequest xmlns:jcm="http://www.oracle.com/JCM" webkey="cs">
      <jcm:Service ServiceId="GET_FILE">
        <jcm:Document>
          <jcm:Field name="documentName">abcd.pdf</jcm:Field>
          <jcm:Field name="documentID">156</jcm:Field>
        </jcm:Document>
        <jcm:Document>
          <jcm:Field name="documentName">efgh.pdf</jcm:Field>
          <jcm:Field name="documentID">850</jcm:Field>
        </jcm:Document>
      </jcm:Service>
    </jcm:GenericRequest>
  </soapenv:Body>
</soapenv:Envelope>
Json到Xml 产生:

{
  "webKey": "cs",
  "serviceId": "GET_FILE",
  "documents": [
    {
      "documentName": "abcd.pdf",
      "documentID": "156"
    },
    {
      "documentName": "efgh.pdf",
      "documentID": "850"
    }
  ]
}
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header></soapenv:Header>
  <soapenv:Body>
    <jcm:GenericRequest xmlns:jcm="http://www.oracle.com/JCM" webkey="cs">
      <jcm:Service ServiceId="GET_FILE">
        <jcm:Document>
          <jcm:Field name="documentName">abcd.pdf</jcm:Field>
          <jcm:Field name="documentID">156</jcm:Field>
        </jcm:Document>
        <jcm:Document>
          <jcm:Field name="documentName">efgh.pdf</jcm:Field>
          <jcm:Field name="documentID">850</jcm:Field>
        </jcm:Document>
      </jcm:Service>
    </jcm:GenericRequest>
  </soapenv:Body>
</soapenv:Envelope>

abcd.pdf
156
efgh.pdf
850

感谢您的回复@utechtzs!我将尝试此解决方案并回复。感谢您的回复@utechtzs!我将尝试此解决方案并回复。