3
我忙於創建XML文檔。 xsd創建了java類,但是發生了一些奇怪的事情。我想有一個XML等這樣從生成的來源創建XML
<SystemDocumentationService.GetSystemConfigurationResponse>
<SystemConfiguration>
<TimeStamp>
<Value>2017-10-04T13:30:38</Value>
</TimeStamp>
<ServiceStartList>
<ServiceIdentification>
<Service>
<ServiceName>CustomerInformationService</ServiceName>
<IBIS-IP-Version>
<Value>token</Value>
</IBIS-IP-Version>
</Service>
</ServiceIdentification>
</ServiceStartList>
</SystemConfiguration>
</SystemDocumentationService.GetSystemConfigurationResponse>
而是我得到這個
<SystemDocumentationService.GetSystemConfigurationResponse>
<SystemConfiguration>
<TimeStamp>
<Value>2017-10-04T13:30:38</Value>
</TimeStamp>
<ServiceStartList>
<ServiceIdentification>
<ServiceIdentification>
<Service>
<ServiceName>CustomerInformationService</ServiceName>
<IBIS-IP-Version>
<Value>token</Value>
</IBIS-IP-Version>
</Service>
</ServiceIdentification>
</ServiceIdentification>
</ServiceStartList>
</SystemConfiguration>
</SystemDocumentationService.GetSystemConfigurationResponse>
正如你可以看到由於某種原因發生了標籤ServiceIdentifcation兩次,我不願意。
隨着Maven插件,我用這一個
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>ibis_ip</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<extension>true</extension>
<packageName>com.ximedes.giva.core.ibisip</packageName>
<schemaDirectory>${project.basedir}/src/main/resources/xsd</schemaDirectory>
<staleFile>${project.build.directory}/jaxb2/.ibisStaleFileFlag</staleFile>
<clearOutputDir>true</clearOutputDir>
<bindingDirectory>${project.basedir}/src/main/resources/xsd</bindingDirectory>
<bindingFiles>binding.xjb</bindingFiles>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.10</version>
<executions>
<execution>
<id>test</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${basedir}/target/generated-sources</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
生成的Java類是這一個
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "SystemDocumentationService.SystemConfigurationData",
propOrder = {
"timeStamp",
"serviceStartList",
"deviceSpecificationList",
"heartbeatIntervall"
})
public class SystemDocumentationServiceSystemConfigurationData {
@XmlElement(name = "TimeStamp", required = true)
protected IBISIPDateTime timeStamp;
@XmlElement(name = "ServiceStartList", required = true)
protected ServiceStartListStructure serviceStartList;
@XmlElement(name = "DeviceSpecificationList", required = true)
protected DeviceSpecificationListStructure deviceSpecificationList;
@XmlElement(name = "HeartbeatIntervall")
protected IBISIPDouble heartbeatIntervall;
//getter's and setter's
}
和ServiceStartListStructure是
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ServiceStartListStructure", propOrder = {
"serviceIdentifications"
})
public class ServiceStartListStructure {
@XmlElement(name = "ServiceIdentification", required = true)
protected List<ServiceIdentificationStructure> serviceIdentifications;
public List<ServiceIdentificationStructure> getServiceIdentifications() {
if (serviceIdentifications == null) {
serviceIdentifications = new ArrayList<ServiceIdentificationStructure>();
}
return this.serviceIdentifications;
}
}
我想的東西用maven插件是不正確的,但我不知道。
編輯:
這裏是ServiceIdentificationStructure
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ServiceIdentificationStructure", propOrder = {
"service",
"device"
})
public class ServiceIdentificationStructure {
@XmlElement(name = "Service", required = true)
protected ServiceSpecificationStructure service;
@XmlElement(name = "Device", required = true)
protected DeviceSpecificationStructure device;
/**
* Gets the value of the service property.
*
* @return
* possible object is
* {@link ServiceSpecificationStructure }
*
*/
public ServiceSpecificationStructure getService() {
return service;
}
/**
* Sets the value of the service property.
*
* @param value
* allowed object is
* {@link ServiceSpecificationStructure }
*
*/
public void setService(ServiceSpecificationStructure value) {
this.service = value;
}
/**
* Gets the value of the device property.
*
* @return
* possible object is
* {@link DeviceSpecificationStructure }
*
*/
public DeviceSpecificationStructure getDevice() {
return device;
}
/**
* Sets the value of the device property.
*
* @param value
* allowed object is
* {@link DeviceSpecificationStructure }
*
*/
public void setDevice(DeviceSpecificationStructure value) {
this.device = value;
}
}
請給我們提供'ServiceIdentificationStructure'的映射。 –
您想刪除包含列表的中間對象; [這是你需要](https://stackoverflow.com/questions/18247182/remove-intermediate-class-when-generating-code-from-schema) – daniu
ServiceIdentifactionStructure被添加 – Philipp