jaxb xmltype proporder 首字母大写出问题

本文介绍如何在使用JAXB进行XML解析时,通过@XmlElement注解调整元素属性首字母大小写,以适应不同输出需求。通过实例展示了如何在实体类中添加注解来控制XML输出格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做xml解析时碰到如下问题:

    在一个定义好的xml 报文中,需要输出一个首字母是大写的element 但是,在jaxb 中定义的propOder 指定的property 首字母必须是小写的.这个时候输出的内容 就全是首字母是大写的内容,

这个时候可以在相应的get 方法上添加一个 @XmlElement的注解,设置name 为 需要输出首字母大写的内容, 此时xml 输出的内容即为 首字母大写的了.

举个例子,首先随便写一个实体类。

package com.xxx;

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

@XmlRootElement
public class Attr {
	
	private String id;
	private String name;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Attr(String id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	public Attr() {
		super();
	}
}

然后 写个测试方法。

public static void main(String[] args) throws Exception {
		
		Attr attr = new Attr("1","张三");
		
		JAXBContext jc = JAXBContext.newInstance(Attr.class);
		Marshaller m= jc.createMarshaller();
		//规范输出.
		m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
		
		StringWriter w= new StringWriter();
		
		m.marshal(attr, w);
		
		System.out.println(w.toString());
	}

输出结果是: 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<attr>
    <id>1</id>
    <name>张三</name>
</attr>

在这个Attr上添加@XmlElement()标签。

package com.xxx;

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

@XmlRootElement
public class Attr {
	
	private String id;
	private String name;
	
	@XmlElement(name="Id")
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	@XmlElement(name="Name")
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Attr(String id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	public Attr() {
		super();
	}
}

再次运行输出结果为:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<attr>
    <Id>1</Id>
    <Name>张三</Name>
</attr>

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值