2011-02-03 15 views
2

,当我得到这个从JAXB文档的@XmlElementJAXB的minOccurs消失需要设置为true

如果需要()为真,那么的Javabean 属性映射到XML模式 元素声明与 的minOccurs = “1”。对于多值属性,maxOccurs对于单值财产 为“1”,对于多值财产为“无限” 。

然而,当我说

@XmlElement(name = "Name", required = true, nillable = false) 

我得到的的.xsd

<xs:element name="Name" type="xs:string"/> 

我不知道我怎样才能使的minOccurs等于1。下面好像required = true导致minOccurs消失

编辑 我认识到,默认值是1。反正是有针对的minOccurs在的.xsd

为1显示EDIT2 我使用JAXBContext.generateSchema生成模式(FYI)

回答

2

的JAXB规范定义的行为:

如果需要()为真,则Javabean的 属性被映射到XML模式 元素声明与 的minOccurs = “1”。对于多值属性,maxOccurs对于单值财产 为“1”,对于多值财产为“无限” 。

的indivual实现(MetroEclipseLink MOXyApache JaxMe)是免费的,他们根据这一规则认为合适的生成XML架构。 Metro和MOXy(我是技术负责人)选择使用缺少minOccurs属性来指示minOccurs =“1”。

+0

再次表示感谢。 – denniss 2011-02-03 21:05:19

1

我不是JAXB专家,但我相信“minOccurs”默认情况下会使用xs:element标记设置为1。换句话说,如果“的minOccurs”属性从标签丢失,其默认值为1

编辑:对不起,没看到你的编辑,直到为时已晚!

0

xs:元素的默认值是minOccurs = 1。 所以它有可能省略属性,并且仍然有相同的含义,这可能是jaxb正在做的事情。

编辑:看到你的编辑太迟。我从来没有见过这样做的方式,但这并不意味着它不可能。

相关问题