我給出了一個包含兩個包含對方的.xsd文件的模式(a.xsd包括b.xsd,b.xsd包含a.xsd)。當我通過我的代碼運行它們以返回一個Schema對象時,我得到一個內存不足異常。有沒有辦法使用由循環依賴關係組成的XML模式創建Schema對象?
我的代碼如下:
protected Schema createSchema(String fileName) throws Exception {
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
factory.setResourceResolver(resourceResolver);
Resource schemaResource = resourceLoader.getResource(fileName);
StreamSource streamSource = new StreamSource(schemaResource.getInputStream());
Schema schema = factory.newSchema(streamSource);
return schema;
}
糾正我,如果我錯了,factory.newSchema(StreamSource的)是使用包括與進口一起,向源加載到內存中。而且由於這兩個xsd是相互包含的,它們會一遍又一遍地加載,填滿內存空間。有沒有辦法擺脫這個循環並加載模式的其餘部分而不改變模式設計?