簡體   English   中英

JAXB沒有為包含生成的Java類的類生成所需的模式?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM