Spring Boot marshall Xml from RestTemplate without RootElement












0















I am using a RestTemplate like this:



return this.getForEntity(baseUrl, BasicResponse.class, parameters);


This is the BasicResponse class:



public class BasicResponse {

private String status;
private String statusMsg;

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public String getStatusMsg() {
return statusMsg;
}

public void setStatusMsg(String statusMsg) {
this.statusMsg = statusMsg;
}


}



No exceptions are thrown but the fields in the returned ResponseEntity body are 'null'. I think it's because the element does not have a valid XML structure (as in no root element). I do not have control over the parsed XML. How can I map my object?










share|improve this question























  • XML that does not have a root element is not XML. It is something that pretends to be XML, but which fails.

    – DwB
    Nov 27 '18 at 22:55
















0















I am using a RestTemplate like this:



return this.getForEntity(baseUrl, BasicResponse.class, parameters);


This is the BasicResponse class:



public class BasicResponse {

private String status;
private String statusMsg;

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public String getStatusMsg() {
return statusMsg;
}

public void setStatusMsg(String statusMsg) {
this.statusMsg = statusMsg;
}


}



No exceptions are thrown but the fields in the returned ResponseEntity body are 'null'. I think it's because the element does not have a valid XML structure (as in no root element). I do not have control over the parsed XML. How can I map my object?










share|improve this question























  • XML that does not have a root element is not XML. It is something that pretends to be XML, but which fails.

    – DwB
    Nov 27 '18 at 22:55














0












0








0








I am using a RestTemplate like this:



return this.getForEntity(baseUrl, BasicResponse.class, parameters);


This is the BasicResponse class:



public class BasicResponse {

private String status;
private String statusMsg;

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public String getStatusMsg() {
return statusMsg;
}

public void setStatusMsg(String statusMsg) {
this.statusMsg = statusMsg;
}


}



No exceptions are thrown but the fields in the returned ResponseEntity body are 'null'. I think it's because the element does not have a valid XML structure (as in no root element). I do not have control over the parsed XML. How can I map my object?










share|improve this question














I am using a RestTemplate like this:



return this.getForEntity(baseUrl, BasicResponse.class, parameters);


This is the BasicResponse class:



public class BasicResponse {

private String status;
private String statusMsg;

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public String getStatusMsg() {
return statusMsg;
}

public void setStatusMsg(String statusMsg) {
this.statusMsg = statusMsg;
}


}



No exceptions are thrown but the fields in the returned ResponseEntity body are 'null'. I think it's because the element does not have a valid XML structure (as in no root element). I do not have control over the parsed XML. How can I map my object?







spring-boot jackson resttemplate






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 27 '18 at 19:48









muchbeermehappymuchbeermehappy

1




1













  • XML that does not have a root element is not XML. It is something that pretends to be XML, but which fails.

    – DwB
    Nov 27 '18 at 22:55



















  • XML that does not have a root element is not XML. It is something that pretends to be XML, but which fails.

    – DwB
    Nov 27 '18 at 22:55

















XML that does not have a root element is not XML. It is something that pretends to be XML, but which fails.

– DwB
Nov 27 '18 at 22:55





XML that does not have a root element is not XML. It is something that pretends to be XML, but which fails.

– DwB
Nov 27 '18 at 22:55












1 Answer
1






active

oldest

votes


















0














Since the XML is not valid,
I believe that you will not be able to use RestTemplate.getForEntity
to get a BasicResponse object.



Try this:



private static final String VALUE_END_TAG = "</blammy>";
private static final String VALUE_START_TAG = "<blammy>";

private XmlMapper xmlMapper; // initialize this correctly, somewhere off page.

method stuff
{
final String actualResponse;
final StringBuilder correctedResponse = new StringBuilder();
final BasicResponse returnValue;

actualResponse = restTemplate.getForEntity(baseUrl, BasicResponse.class, parameters);

correctedResponse.append(VALUE_START_TAG);
correctedResponse.append(actualResponse);
correctedResponse.append(VALUE_END_TAG);

returnValue = xmlMapper.readValue(correctedResponse.toString(), BasicResponse.class);

return returnValue;
}


Use some reasonable value as the element name in the start and end tags,
perhaps "" and "".



Consider using some Jackson annotations,
for example @JacksonXmlRootElement(localName = "blammy")
(this local name matches my example).






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53507071%2fspring-boot-marshall-xml-from-resttemplate-without-rootelement%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Since the XML is not valid,
    I believe that you will not be able to use RestTemplate.getForEntity
    to get a BasicResponse object.



    Try this:



    private static final String VALUE_END_TAG = "</blammy>";
    private static final String VALUE_START_TAG = "<blammy>";

    private XmlMapper xmlMapper; // initialize this correctly, somewhere off page.

    method stuff
    {
    final String actualResponse;
    final StringBuilder correctedResponse = new StringBuilder();
    final BasicResponse returnValue;

    actualResponse = restTemplate.getForEntity(baseUrl, BasicResponse.class, parameters);

    correctedResponse.append(VALUE_START_TAG);
    correctedResponse.append(actualResponse);
    correctedResponse.append(VALUE_END_TAG);

    returnValue = xmlMapper.readValue(correctedResponse.toString(), BasicResponse.class);

    return returnValue;
    }


    Use some reasonable value as the element name in the start and end tags,
    perhaps "" and "".



    Consider using some Jackson annotations,
    for example @JacksonXmlRootElement(localName = "blammy")
    (this local name matches my example).






    share|improve this answer




























      0














      Since the XML is not valid,
      I believe that you will not be able to use RestTemplate.getForEntity
      to get a BasicResponse object.



      Try this:



      private static final String VALUE_END_TAG = "</blammy>";
      private static final String VALUE_START_TAG = "<blammy>";

      private XmlMapper xmlMapper; // initialize this correctly, somewhere off page.

      method stuff
      {
      final String actualResponse;
      final StringBuilder correctedResponse = new StringBuilder();
      final BasicResponse returnValue;

      actualResponse = restTemplate.getForEntity(baseUrl, BasicResponse.class, parameters);

      correctedResponse.append(VALUE_START_TAG);
      correctedResponse.append(actualResponse);
      correctedResponse.append(VALUE_END_TAG);

      returnValue = xmlMapper.readValue(correctedResponse.toString(), BasicResponse.class);

      return returnValue;
      }


      Use some reasonable value as the element name in the start and end tags,
      perhaps "" and "".



      Consider using some Jackson annotations,
      for example @JacksonXmlRootElement(localName = "blammy")
      (this local name matches my example).






      share|improve this answer


























        0












        0








        0







        Since the XML is not valid,
        I believe that you will not be able to use RestTemplate.getForEntity
        to get a BasicResponse object.



        Try this:



        private static final String VALUE_END_TAG = "</blammy>";
        private static final String VALUE_START_TAG = "<blammy>";

        private XmlMapper xmlMapper; // initialize this correctly, somewhere off page.

        method stuff
        {
        final String actualResponse;
        final StringBuilder correctedResponse = new StringBuilder();
        final BasicResponse returnValue;

        actualResponse = restTemplate.getForEntity(baseUrl, BasicResponse.class, parameters);

        correctedResponse.append(VALUE_START_TAG);
        correctedResponse.append(actualResponse);
        correctedResponse.append(VALUE_END_TAG);

        returnValue = xmlMapper.readValue(correctedResponse.toString(), BasicResponse.class);

        return returnValue;
        }


        Use some reasonable value as the element name in the start and end tags,
        perhaps "" and "".



        Consider using some Jackson annotations,
        for example @JacksonXmlRootElement(localName = "blammy")
        (this local name matches my example).






        share|improve this answer













        Since the XML is not valid,
        I believe that you will not be able to use RestTemplate.getForEntity
        to get a BasicResponse object.



        Try this:



        private static final String VALUE_END_TAG = "</blammy>";
        private static final String VALUE_START_TAG = "<blammy>";

        private XmlMapper xmlMapper; // initialize this correctly, somewhere off page.

        method stuff
        {
        final String actualResponse;
        final StringBuilder correctedResponse = new StringBuilder();
        final BasicResponse returnValue;

        actualResponse = restTemplate.getForEntity(baseUrl, BasicResponse.class, parameters);

        correctedResponse.append(VALUE_START_TAG);
        correctedResponse.append(actualResponse);
        correctedResponse.append(VALUE_END_TAG);

        returnValue = xmlMapper.readValue(correctedResponse.toString(), BasicResponse.class);

        return returnValue;
        }


        Use some reasonable value as the element name in the start and end tags,
        perhaps "" and "".



        Consider using some Jackson annotations,
        for example @JacksonXmlRootElement(localName = "blammy")
        (this local name matches my example).







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 27 '18 at 23:09









        DwBDwB

        29.2k84473




        29.2k84473
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53507071%2fspring-boot-marshall-xml-from-resttemplate-without-rootelement%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

            Calculate evaluation metrics using cross_val_predict sklearn

            Insert data from modal to MySQL (multiple modal on website)