Programmazione:Java/Eclipse RCP/Visualizzare il contenuto di un XSD in una Tree
Da WikiSitech.
Versione del 16 feb 2007 alle 10:06 di Rimondini (discussione | contributi)
Eclipse mette a disposizione delle classi che permettono il parsing e la visualizzazione di un qualsiasi XSD, andando eventualmente a risolvere le import e le include.
Dato che Eclipse utilizza un modello EMF per rappresentare in modo generalizzato l'XSD, per effettuare il parsing bisogna utilizzare le classi Resource di EMF.
import org.eclipse.emf.common.command.BasicCommandStack;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.xsd.XSDSchema;
import org.eclipse.xsd.provider.XSDItemProviderAdapterFactory;
import org.eclipse.xsd.util.XSDResourceFactoryImpl;
import org.eclipse.xsd.util.XSDResourceImpl;
XSDSchema loadXSD(String URL) {
Map option = new HashMap();
option.put("XSD_TRACK_LOCATION", Boolean.TRUE);
XSDItemProviderAdapterFactory syntacticAdapterFactory = new XSDItemProviderAdapterFactory();
BasicCommandStack commandStack = new BasicCommandStack();
AdapterFactoryEditingDomain editingDomain = new AdapterFactoryEditingDomain(syntacticAdapterFactory, commandStack);
editingDomain.getResourceSet().getResourceFactoryRegistry().getExtensionToFactoryMap().put("xsd", new XSDResourceFactoryImpl());
XSDResourceImpl xsdResource = (XSDResourceImpl)editingDomain.getResourceSet().createResource(URI.createURI(URL));
try {
xsdResource.load(editingDomain.getResourceSet().getLoadOptions());
} catch (IOException e) {
e.printStackTrace();
}
return xsdResource.getSchema();
}