使用jaxb

时间:2015-12-17 07:34:13

标签: java xml xsd jaxb

我将从xsd生成java代码。我想知道如何在使用jaxb将xsd转换为java时删除xsd元素。我的目标是忽略消息

前:

<xs:element name="note">
      <xs:complexType>
        <xs:sequence>
          <xs:element type="xs:string" name="name"/>
          <xs:element type="xs:string" name="message"/>
        </xs:sequence>
      </xs:complexType>
</xs:element>

Java变量

        @XmlElement
        protected String name;

在这里,您可以看到消息元素已被删除。我想知道怎么做?

2 个答案:

答案 0 :(得分:0)

你可以改变.xsd吗? 当前元素&#34;注意&#34;告诉我们&#34; name&#34;和&#34;消息&#34;是必须的。如果你想要&#34;消息&#34;有条件的你可能需要添加minOccurs =&#34; 0&#34;属性:

<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
      <xs:element type="xs:string" name="name"/>
      <xs:element type="xs:string" name="message" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

答案 1 :(得分:0)

如果我理解正确,那么总结一下,你想忽略一个强制性元素,但仍然希望结果能够正确验证。我的简短回答是,这是矛盾的,没有意义。 JAXB是为正确执行而构建的,你想错误地做(?)。

你有几个选择,例如。

  • 使用额外的构造函数参数。
  • 生成no-arg构造函数。
  • 不要生成,而是手动编写JAXB注释类。也许关闭一些验证。
  • 不要使用JAXB,使用别的东西(dom4j等人)或手工制作xml
  • 可能你可以在绑定文件甚至插件中添加一些覆盖,但我不认为这是值得的。