需求:
<PROPERTYLIST>
<PROPERTY PROPERTYCODE="test1">value1</PROPERTY>
<PROPERTY PROPERTYCODE="test2">value2</PROPERTY>
<PROPERTY PROPERTYCODE="test3">value3</PROPERTY>
</PROPERTYLIST>
根据PROPERTYCODE 的值,获取value,赋值给java对象。
根据标签,对应,可以直接使用@XmlElement(name = "PROPERTY"),但是根据属性值,还真不知道怎么用,后来在网上找到了一个帖子,
https://my.oschina.net/zy223344/blog/727603
说明的很详细,需要使用 @XmlAnyAttribute 属性转化
@XmlAccessorType(XmlAccessType.NONE) @XmlRootElement(name="PROPERTYLIST") public class ValueList { private List<Property> PropertyList = new ArrayList<Property>(); public List<Property> getPropertyList() { return PropertyList; } @XmlElement(name="Property") public void setPropertyList(List<Property> propertyList) { this.propertyList = propertyList; } }
@XmlAccessorType(XmlAccessType.NONE) @XmlRootElement(name = "Property") public class Property { @XmlAnyAttribute() private Map map;//每个Item的属性值 @XmlValue private String text; public Map getMap() { return map; } public void setMap(Map map) { this.map = map; } public String getText() { return text; } public void setText(String text) { this.text = text; } }
text 的值就是对应的value
使用map.get(QName.valueOf("PROPERTYCODE")) 获取test1.
若不适用QName,确实获取到的为null。