如果我有一个如下的架构:
<xs:element name="Book">
<xs:complexType>
<xs:sequence>
<xs:element ref="Chapter" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Chapter">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Word" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Word">
</xs:element>
它会产生类似的东西:
@XmlRootElement(name = "Book")
public class Book {
@XmlElement(name = "Chapter", required = true)
protected Chapter chapter;
是否可以生成以下内容?
@XmlElement(name = "Chapter", required = true)
protected Chapter chapter = new Chapter();
这样,即使 XML 文件缺少 Book 中的 Chapter 元素,当它被解码时,仍然会创建一个 Book 对象,因此可以这样做
book.getChapter().getWord() 并检索一个空列表,而不是检查 null。
最佳答案
您可以创建一个插件。我写了一个 short tutorial这可以帮助您做到这一点。希望你觉得它有帮助。
关于元素初始值设定项的 JAXB XJC 代码生成及其声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13250913/