对于REST服务,我以XML定义了必要的DTO来生成它的JAXB对象。对于生成,我使用Eclipse IDE的内置选项。
问题在于类没有按预期生成。给定下面的XML模式文件,我预计将生成3类。ImageType
,Image
和Images
。但是Image
不会生成Image元素的类。目前,我不知道我在做什么错。
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.company.com/schema/v1/ImageDTO"
elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:Q1="http://www.company.com/schema/v1/BusinessObjectDTO"
xmlns:Q2="http://www.company.com/schema/v1/ImageDTO">
<import schemaLocation="BusinessObjectDTO.xsd"
namespace="http://www.company.com/schema/v1/BusinessObjectDTO"></import>
<complexType name="ImageType" abstract="false">
<complexContent>
<extension base="Q1:BusinessObjectType">
<sequence>
<element name="name" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="fileName" type="string" maxOccurs="1"
minOccurs="1"></element>
<element name="thumbnailFileName" type="string" maxOccurs="1"
minOccurs="1"></element>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="Image" type="Q2:ImageType"></element>
<element name="Images">
<complexType>
<sequence>
<element name="ImageList" type="Q2:ImageType" maxOccurs="unbounded"
minOccurs="0"></element>
</sequence>
</complexType>
</element>
</schema>
您已将其定义Image
为type的元素ImageType
。Image
因此,只是该类型使用的名称。该ImageType
定义将被转换为Java类,并且当Image
在架构中的某个地方引用该元素时,将导致类型字段ImageType
被注释为具有名称的XML元素Image
。
所以说你有...
<element ref="Image" minOccurs="1" maxOccurs="1" />
类型定义中的某处会导致...
@XmlElement(name="Image" ...)
ImageType image;
...在相应的类别中。
Images
获得类定义的原因是因为您已将其定义为内嵌的complexType。Image
指的是一种类型,因此它们只是使用相应的类。Images
具有匿名类型定义,因此必须生成一个类以捕获其结构。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句