Hi Vikram,
This is happening because your XPath generates multiple elements with below
structure, which not your desired output.
*                        <Detail>*
* <a>26</a>*
* <b>box</b>*
* <c>2019-01-17T00:00:00</c>*
* </Detail> *

In an XML point of view, you are expecting an xml content like below, which
is not a valid XML content since it does not have a root element. You can
test this with an online XPath evaluator and verify.

*                         <Detail>*
* <a>40</a>*
* <b>car</b>*
* <c>2019-01-17T00:00:00</c>*
* </Detail>*
* <Detail>*
* <a>37</a>*
* <b>table</b>*
* <c>2019-01-17T00:00:00</c>*
* </Detail>*


I don't think you can achieve your requirement with the enrich mediator
since it only supports Xpaths. Please try using the Payload Factory
mediator[1] with Jsonpath. Then you can extract the "Detail" element from
the converted JSON and set it to the body.

[1] - https://docs.wso2.com/display/EI611/PayloadFactory+Mediator

On Sun, Jan 21, 2018 at 8:37 PM, vikram nayak <nayak.vikr...@yahoo.in>
wrote:

>
>
> On Sunday, 21 January 2018 8:14 PM, vikram nayak <nayak.vikr...@yahoo.in>
> wrote:
>
>
> Hi All,,
>
> I have output like below from my xslt :
>
> <?xml version='1.0' encoding='utf-8'?>
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/
> ">
> <soapenv:Body>
> <Result>
> <Detail>
> <a>40</a>
> <b>car</b>
> <c>2019-01-17T00:00:00</c>
> </Detail>
> <Detail>
> <a>37</a>
> <b>table</b>
> <c>2019-01-17T00:00:00</c>
> </Detail>
> <Detail>
> <a>35</a>
> <b>book</b>
> <c>2019-01-17T00:00:00</c>
> </Detail>
> <Detail>
> <a>26</a>
> <b>box</b>
> <c>2019-01-17T00:00:00</c>
> </Detail>
> </Result>
> </soapenv:Body>
> </soapenv:Envelope>
>
> which gets converted into below json in postman :
>
> {
>     "Result": {
>         "Detail": [
>             {
>                 "a": "40",
>                 "b": "car",
>                 "c": "2019-01-17T00:00:00"
>             },
>             {
>                 "a": "37",
>                 "b": "table",
>                 "c": "2019-01-17T00:00:00"
>             },
>             {
>                 "a": "35",
>                 "b": "book",
>                 "c": "2019-01-17T00:00:00"
>             },
>             {
>                 "a": "26",
>                 "b": "box",
>                 "c": "2019-01-17T00:00:00"
>             }
>         ]
>     }
> }
>
> but in my desired output response . I do not want root element "Result".
>
> Desired output :
>
> {
>     "Detail": [
>             {
>                 "a": "40",
>                 "b": "car",
>                 "c": "2019-01-17T00:00:00"
>             },
>             {
>                 "a": "37",
>                 "b": "table",
>                 "c": "2019-01-17T00:00:00"
>             },
>             {
>                 "a": "35",
>                 "b": "book",
>                 "c": "2019-01-17T00:00:00"
>             },
>             {
>                 "a": "26",
>                 "b": "box",
>                 "c": "2019-01-17T00:00:00"
>             }
>         ]
>     }
> }
>
> Going through some online documents I tried below enrich after xslt.
>
> <enrich>
>     <source clone="true" xpath="$body/Result/Detail"/>
>     <target type="body"/>
> </enrich>
>
> But it gives only one element from my output  like below :
>
> {
>     "Detail": {
>         "insuranceNumber": "40",
>         "policyName": "Laptop insurance - 4 star",
>         "agreementValidTill": "2019-01-17T00:00:00"
>     }
> }
>
> Please guide.
>
> Thanks,
> Vikram
>
>
>
> _______________________________________________
> Dev mailing list
> Dev@wso2.org
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 
Vinod Kavinda
Senior Software Engineer
*WSO2 Inc. - lean . enterprise . middleware <http://www.wso2.com>.*
Mobile : +94 (0) 712 415544
Blog : http://soatechflicks.blogspot.com/
[image: http://wso2.com/signature]
<http://wso2.com/signature>
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to