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 に答える