我使用JAXB註釋從我的類生成xsd模式。JAXB默認屬性值
帶參數defaultValue的Annotation @XmlElement設置元素的默認值。 是否可以爲@XmlAttribute設置默認值?
P.S.我檢查了XSD語法允許屬性
我使用JAXB註釋從我的類生成xsd模式。JAXB默認屬性值
帶參數defaultValue的Annotation @XmlElement設置元素的默認值。 是否可以爲@XmlAttribute設置默認值?
P.S.我檢查了XSD語法允許屬性
可能想的默認值檢查:Does JAXB support default schema values?
說實話,我沒有頭緒爲什麼沒有在標準JAXB屬性的默認選項。
當您從xsd生成類,並在其中定義一個具有默認值的屬性時,那麼jaxb將生成一個if子句,它將檢查空值,如果是,將返回默認值。
對於XML屬性,默認值進入getter方法。
例如
customer.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name="Customer">
<complexType>
<sequence>
<element name="element" type="string" maxOccurs="1" minOccurs="0" default="defaultElementName"></element>
</sequence>
<attribute name="attribute" type="string" default="defaultAttributeValue"></attribute>
</complexType>
</element>
</schema>
它將產生象下面類。
@XmlRootElement(name = "Customer")
public class Customer {
@XmlElement(required = true, defaultValue = "defaultElementName")
protected String element;
@XmlAttribute(name = "attribute")
protected String attribute;
......
public String getAttribute() {
//here the default value is set.
if (attribute == null) {
return "defaultAttributeValue";
} else {
return attribute;
}
}
創建的樣本XML閱讀
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Customer><element/></Customer>
當我們在主類編寫邏輯馬歇爾。
File file = new File("...src/com/testdefault/xsd/CustomerRead.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);
System.out.println(customer.getElement());
System.out.println(customer.getAttribute());
這將打印在控制檯。 defaultElementName defaultAttributeValue
P.S - :要獲取元素的默認值,需要將元素的空白副本放入正在編組的xml中。
什麼...註釋有效地沒有一些defaultValue鍵。其實我很驚訝。 –
已經討論過元素的默認值[here](http://stackoverflow.com/questions/371127) - 也許會幫助你獲得屬性。 –