3

我有这门课

@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?

4

1 回答 1

1

尝试更改您的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;
   }
于 2013-03-12T16:25:48.977 回答