元素默认值
要获取element属性的默认值,您需要对其进行如下注释:
@XmlElement(defaultValue="defaultElVal")public String getChildVal() { return childVal;}属性默认值
如果使用Eclipselink
JAXB(MOXy),则将使用提供的代码获得默认属性值。Metro的JAXB实施中可能存在一个错误,阻止了此工作。注意我领导了MOXy的实现。
替代方法
以下代码应可用于任何JAXB实现,而无需对模型进行任何代码更改。您可以执行以下操作并利用SAXSource:
import java.io.File; import java.io.FileInputStream;import javax.xml.XMLConstants; import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; import javax.xml.parsers.SAXParserFactory;import javax.xml.transform.sax.SAXSource;import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory;import org.xml.sax.InputSource;import org.xml.sax.XMLReader;public class TestParser { public static void main(String[] pArgs) { try { JAXBContext context = JAXBContext.newInstance(RootElement.class); Unmarshaller unmarshaller = context.createUnmarshaller(); SchemaFactory schemaFac = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema sysConfigSchema = schemaFac.newSchema( new File("example.xsd")); SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setNamespaceAware(true); spf.setSchema(sysConfigSchema); XMLReader xmlReader = spf.newSAXParser().getXMLReader(); SAXSource source = new SAXSource(xmlReader, new InputSource(new FileInputStream("example1.xml"))); RootElement root = (RootElement)unmarshaller.unmarshal( source); System.out.println("Child Val: " + root.getChild().getChildVal()); System.out.println("Child Attr: " + root.getChild().getAttr()); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } }}


