SpringBoot 返回自定义的xml

一般方法

SpringBoot 默认返回格式是json,现在项目中需要后台返回xml格式的数据,通常做法是加入依赖 jackson-dataformat-xml

<dependency>
      <groupId>com.fasterxml.jackson.dataformat</groupId>
      <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

然后设置请求方法的返回类型为 "application/xml"

 @RequestMapping(value="/greeting",produces = "application/xml",method= RequestMethod.GET)
    public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
    	Long id = counter.incrementAndGet();
    	Greeting greeting = new Greeting(id,name);
        return greeting;
    }

得到结果,这样做虽然简单,但只能得到默认与类名及其属性名称相同的xml标签,如果想要改变xml的各节点名称及属性只能换另一种方法

<Greeting>
    <id>1</id>
    <name>World</name>
</Greeting>

返回自定义的xml

首先,删掉依赖包 jackson-dataformat-xml

使用xml注解给返回类打上标签,注解中设置对应的xml节点名称。

常用注解:

@XmlRootElement:表示映射到根目录标签元素
@XmlElement:表示映射到子元素
@XmlAttribute:表示映射到属性

import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlElement;

@XmlRootElement(name="root")
public class Greeting {
	
    private  long id;
    
    private  String name;
    
    public Greeting() {
		
	}

    public Greeting(long id,String name) {
        this.id = id;
        
        this.name =name;
    }
   
    public long getId() {
        return id;
    }

    
    @XmlElement(name="ID")
	public void setId(long id) {
		this.id = id;
	}

    public String getName() {
		return name;
	}

    @XmlElement(name="MyName")
    public void setName(String name) {
		this.name = name;
	}
	
    
}

Controller

@RestController
public class GreetingController {
    
    private final AtomicLong counter = new AtomicLong();

    @ApiOperation(value="测试json",notes="默认输入为World")
    @RequestMapping(value="/greeting",produces = "application/xml",method= RequestMethod.GET)
    public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
    	Long id = counter.incrementAndGet();
    	Greeting greeting = new Greeting(id,name);
        return greeting;
    }
}

返回结果

<root>
    <ID>1</ID>
    <MyName>World</MyName>
</root>

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值