spring mvc 返回xml格式數據


1.問題 : 因為業務需要,需要發送xml格式的數據,使用spring mvc 自己解析,就不用費心去自己搞這些東西.

2.解決:

新建一個實體類,直接在實體類中添加注解即可,如下:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class XMlTestBean {
    @XmlElement
    @XmlCDATA
    private String username;
    @XmlElement
    private String password;
    @XmlElement
    private String name;
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "XMlTestBean [username=" + username + ", password=" + password + ", name=" + name + "]";
    }
    
    
}

類上方添加:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)

字段名添加:

@XmlElement

在controller類中返回即可:

@Controller
@RequestMapping("test")
public class TestController {
    
    @RequestMapping("xml")
    @ResponseBody
    public XMlTestBean getTestXML(){
        XMlTestBean xml = new XMlTestBean();
        xml.setUsername("aa");
        xml.setPassword("bb");
        xml.setName("cc");
        return xml;
    }
    @RequestMapping("getXml")
    public void getXml(@RequestBody XMlTestBean xml){
        System.out.println(xml);
    }
    

}

結果:

<?xml version="1.0" encoding="UTF-8"?>
<xMlTestBean>
    <username>
        <![CDATA[aa]]>
    </username>
    <password>bb</password>
    <name>cc</name>
</xMlTestBean>

 

補充:@XmlCDATA注解的作用:可以讓返回值中添加

<![CDATA[]]>

 CDATA 區段,可以不被XML解析器解析,但是需要在pom.xml添加

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>2.5.0</version>
</dependency>

和在實體類的包下添加jaxb.properties文件,文件內容如下:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

 

只是解決了問題,但是原理這些還不懂,Σ( ° △ °|||)︴,有機會再搞懂原理吧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM