需求:
<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。
