XML-элемент Spring Boot с атрибутом и содержимым

Как сгенерировать ниже XML из класса Java, т.е. элемент XML с атрибутом и содержимым

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bookstore>
    <book category="gaming">
        <author>Pratap A K</author>
        <price>100र</price>
        <title lang="en">some title</title>
        <year>2017</year>
    </book>
</bookstore>

Контроллер.java

@RequestMapping(value = "/xml", method = RequestMethod.GET, produces = MediaType.APPLICATION_XML_VALUE)
    @ResponseStatus(HttpStatus.OK)
    @ResponseBody
    public Bookstore getXMLData() {

        Bookstore bookstore = new Bookstore();
        Book book = new Book();

        book.setCategory("gaming");
        book.setAuthor("Pratap A K");
        book.setPrice("100र");
        book.setYear("2017");

        Title title = new Title();
        title.setLang("kannada");
        book.setTitle(title);

        bookstore.setBook(book);

        return bookstore;
    }

Книжный магазин.java

@XmlRootElement(name="bookstore")
public class Bookstore {

    private Book book;
    //getters and setters   
}

Book.java

public class Book {

    private String category;
    private String author;
    private String year;
    private String price;
    private String lang;
    private Title title;

    @XmlAttribute(name="category")
    public String getCategory() {
        return category;
    }
    //getters and setters continue...

}

Заголовок.java

public class Title {

    private String lang;

    @XmlAttribute(name="lang")
    public String getLang() {
        return lang;
    }

    public void setLang(String lang) {
        this.lang = lang;
    }
}

Я получаю вывод, как показано ниже

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bookstore>
    <book category="gaming">
        <author>Pratap A K</author>
        <price>100र</price>
        <title lang="en"/>
        <year>2017</year>
    </book>
</bookstore>

Теперь, как я могу установить заголовок без использования каких-либо дополнительных тегов/переменных-членов в классе Java?

заранее спасибо


person Pratap A.K    schedule 07.07.2016    source источник


Ответы (1)


Это достигается с помощью аннотации @XMLValue.

Заголовок.java

public class Title {

    private String lang;
    private String value;

    @XmlValue
    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    @XmlAttribute
    public String getLang() {
        return lang;
    }

    public void setLang(String lang) {
        this.lang = lang;
    }
}

Уже ответил по ссылке отвечал здесь....

person Pratap A.K    schedule 07.07.2016