Elim的博客

用来记录一些原创性的总结


Elim

JAXB之XmlAttribute

@XmlAttribute也是JAXB中比较基础的一个注解。@XmlElement用于把对应的一个属性映射为它对应XML的一个子元素,而@XmlAttribute可以把对应的一个属性映射为它对应XML元素的一个属性。

注意,只有基本类型的属性才能使用@XmlAttribute,复杂类型的属性如果定义了XmlID,也可以通过ID关联到属性上。

下面来看一个简单的示例。

	@Test
	public void test() {
		User user = new User();
		user.setId(1);
		user.setUsername("张三");
		
		JAXB.marshal(user, System.out);
	}
	
	@XmlRootElement
	@XmlAccessorType(XmlAccessType.FIELD)
	public static class User {
		@XmlAttribute
		private Integer id;
		@XmlAttribute(name="name")
		private String username;
		public Integer getId() {
			return id;
		}
		public void setId(Integer id) {
			this.id = id;
		}
		public String getUsername() {
			return username;
		}
		public void setUsername(String username) {
			this.username = username;
		}
	}

在上面的示例中我们把User对象的两个属性都定义为了关联对应XML元素的属性,其中id没有指定关联的属性的名称,会默认使用Java属性名称,而username属性上的@XmlAttribute通过name指定了关联的属性名称为name。所以测试生成的XML效果将如下所示:

<user id="1" name="张三"/>

(注:本文由Elim写于2017年8月10日)