【问题标题】:Spring Boot XML element with attribute and content具有属性和内容的 Spring Boot XML 元素
【发布时间】:2016-11-09 07:39:12
【问题描述】:

如何从 Java 类生成以下 XML,即具有属性和内容的 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>

Controller.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;
    }

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...

}

Title.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 类中的任何额外标签/成员变量的情况下设置标题?

提前致谢

【问题讨论】:

    标签: xml spring-boot jackson javabeans jackson-dataformat-xml


    【解决方案1】:

    通过使用 @XMLValue 注释实现了这一点

    Title.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;
        }
    }
    

    已在链接中回答 answered here....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多