可通过@XmlElement注解的name属性显式指定XML元素名称,如@XmlElement(name="full-name");作用于字段需配合@XmlAccessorType(XmlAccessType.FIELD),作用于getter更推荐;支持namespace指定命名空间;name为空时回退默认规则,驼峰转连字符需手动设置。

可以通过 @XmlElement 注解的 name 属性,显式指定 Java 字段或 getter 方法在 XML 中对应的元素名称。
直接设置 name 属性
这是最常用的方式。在字段或 getter 上添加 @XmlElement(name = "自定义名"),JAXB 序列化时就会使用该名称作为 XML 标签名。
- 作用于字段(需开启字段访问,如
@XmlAccessorType(XmlAccessType.FIELD)):
public class Person {
@XmlElement(name = "full-name")
private String name;
}
生成 XML:
- 作用于 getter(默认行为,推荐用于封装控制):
private String name;
@XmlElement(name = "full-name")
public String getName() { return name; }
}
区分命名空间(可选 namespace)
如果需要带命名空间的元素,可同时指定 namespace 属性:
立即学习“Java免费学习笔记(深入)”;
@XmlElement(name = "id", namespace = "http://example.com/ns")public String getId() { ... }
生成:(实际前缀由上下文决定)
处理 name 为空或 null 的情况
@XmlElement(name = "") 或不设 name,会退回到默认命名规则:取字段/方法名,首字母小写(如 firstName → firstName)。若想用驼峰转连字符(如 firstName → first-name),JAXB 本身不支持自动转换,需手动指定:
private String firstName;
与 @XmlType、@XmlRootElement 配合使用
@XmlElement 控制单个字段的标签名,不影响根元素或类型整体结构。若要统一调整整个类的序列化行为,可结合:
-
@XmlRootElement(name = "person"):设定根元素名 -
@XmlType(propOrder = {"fullName", "age"}):显式声明 XML 子元素顺序
注意:@XmlElement 的 name 值优先级高于字段名和 @XmlType 的字段映射逻辑。









