[英]JAXB is not generating the required schema for a class that contains generated Java classes?
我有這門課
@XmlRootElement
public class GpsDataRequest{
//definition of variables
@XmlElement(required=true, type=GpxType.class)
public GpxType getGpxRoot() {
return gpxRoot;
}
@XmlElement(required=true, type=JourneyXML.class)
public JourneyXML getJourneyPlanRoot() {
return journeyPlanRoot;
}
@XmlElement(required=true)
public String getSecurityToken() {
return securityToken;
}
@XmlElement(required=true)
public UUID getUuid() {
return uuid;
}
}
當我使用此代碼生成架構時:
public class SchemaGenerator {
public static void main(String[] args)
{
try {
JAXBContext context=
JAXBContext.newInstance(GpsDataRequest.class);
SchemaOutputResolver sor =new DemoSchemaOutputResolver();
context.generateSchema(sor);
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static class DemoSchemaOutputResolver extends SchemaOutputResolver {
@Override
public Result createOutput(String namespaceUri, String suggestedFileName)
throws IOException {
// create new file
File file = new File("request.xsd");
// create stream result
StreamResult result = new StreamResult(file);
// set system id
result.setSystemId(file.toURI().toURL().toString());
// return result
return result;
}
}
}
我得到的只是GpxType類的XSD。 這是為什么?
只是為了通知您,GpxType和JourneyXML是從XSD文件生成的。
如何強制執行此操作以生成我需要的相應XSD?
嘗試將createOutput
方法更改為不總是寫入request.xsd
文件。 我相信您的模型中有多個名稱空間,因此生成了多個XML模式。
@Override
public Result createOutput(String namespaceUri, String suggestedFileName) throws IOException {
// create new file
File file = new File(suggestedFileName);
// create stream result
StreamResult result = new StreamResult(file);
// set system id
result.setSystemId(file.toURI().toURL().toString());
// return result
return result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.