Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAXB中的元素选择_Java_Xml_Jaxb - Fatal编程技术网

Java JAXB中的元素选择

Java JAXB中的元素选择,java,xml,jaxb,Java,Xml,Jaxb,我创建的JAXB类可能与以下任一XML元素相关: <Request> <Details/> <Option1/> </Request> <Request> <Details/> <Option2/> </Request> 换句话说,Option1和Option2元素在请求类中都是可选的,但是必须有一个元素才能使XML有效,就像异或一样。我是否可以在请求类中使用JAXB注释来指定

我创建的JAXB类可能与以下任一XML元素相关:

<Request>
  <Details/>
  <Option1/>
</Request>

<Request>
  <Details/>
  <Option2/>
</Request>

换句话说,Option1和Option2元素在请求类中都是可选的,但是必须有一个元素才能使XML有效,就像异或一样。我是否可以在请求类中使用JAXB注释来指定这一点?或任何其他解决方法?

您可以在
请求
类中实现,并以编程方式执行验证:

private void afterUnmarshal(Unmarshaller unmarshaller, Object parent) {
   if ((option1 == null) == (option2 == null)) {
      throw new ValidationException();
   }
}

至少有一个不是独占的
:)我的道歉-只有一个必须存在。没问题,我相应地编辑了我的答案。:)