spring mvc 返回xml格式数据
程序员文章站
2022-03-17 11:45:26
1.问题 : 因为业务需要,需要发送xml格式的数据,使用spring mvc 自己解析,就不用费心去自己搞这些东西. 2.解决: 新建一个实体类,直接在实体类中添加注解即可,如下: 类上方添加: @XmlRootElement@XmlAccessorType(XmlAccessType.FIELD ......
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
只是解决了问题,但是原理这些还不懂,σ( ° △ °|||)︴,有机会再搞懂原理吧
推荐阅读