API Java pour analyser le fichier de schéma XSD [fermé]


Existe-t-il une API Java pour analyser un fichier de schéma XSD?

J'ai trouvé XSOM, mais il ne semble plus être maintenu.

Author: Peter Mortensen, 2010-10-22

9 answers

Utilisation de la norme JDK 6:

System.setProperty(DOMImplementationRegistry.PROPERTY, "com.sun.org.apache.xerces.internal.dom.DOMXSImplementationSourceImpl");
DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); 
com.sun.org.apache.xerces.internal.impl.xs.XSImplementationImpl impl = (XSImplementationImpl) registry.getDOMImplementation("XS-Loader");
XSLoader schemaLoader = impl.createXSLoader(null);
XSModel model = schemaLoader.loadURI("src/test/resources/my.xsd");
 19
Author: emicklei, 2015-10-19 15:40:35

Nous avons eu tendance à utiliser Apache Xerces http://xerces.apache.org / . Fonctionne très bien pour nous.

 4
Author: Chris Aldrich, 2010-10-22 12:46:36

Vous pouvez utiliser XMLBeans http://xmlbeans.apache.org . Pour la plupart des cas d'utilisation autour de la liaison XML/Java, les gens semblent se déplacer vers JAXB car il est intégré. Mais pour ce que vous voulez faire, XMLBeans donne accès à d'excellentes structures de données de haut niveau qui représentent des schémas d'une manière facile à parcourir.

Vous pouvez commencer par quelque chose comme...

SchemaTypeSystem sts = XmlBeans.compileXsd(new XmlObject[] {
    XmlObject.Factory.parse(xsdFile) }, XmlBeans.getBuiltinTypeSystem(), null);

À partir de là, vous devriez être en mesure de comprendre comment percer dans le SchemaTypeSystem à partir du JavaDoc.

Si quelqu'un connaît une alternative aussi pratique et relativement supportée, il serait bon de la connaître. Je suis activement à la recherche.

 4
Author: Chuck, 2018-03-21 13:03:43
public class XsdElements {
    public static void main(String args[]) { 
        try { 
            // parse the document
            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
            Document doc = docBuilder.parse (new File("C:/Users/rb054/Desktop/Descriptor.1.5.1.xsd")); 
            NodeList list = doc.getElementsByTagName("xs:element"); 

            //loop to print data
            for(int i = 0 ; i < list.getLength(); i++)
            {
                Element first = (Element)list.item(i);
                if(first.hasAttributes())
                {
                    String nm = first.getAttribute("name"); 
                    System.out.println(nm); 
                    String nm1 = first.getAttribute("type"); 
                    System.out.println(nm1); 
                }
            }
        } 
        catch (ParserConfigurationException e) 
        {
            e.printStackTrace();
        }
        catch (SAXException e) 
        { 
            e.printStackTrace();
        }
        catch (IOException ed) 
        {
            ed.printStackTrace();
        }
    }
}
 3
Author: Roshan Dsouza, 2014-02-17 13:08:03

TryEasyWSDL - il peut analyser les spécifications XSD et WSDL.

 2
Author: Martin, 2012-11-05 00:51:56

JAXB

Voir ce question

 1
Author: Marcus, 2017-05-23 11:46:18

J'ai utilisé ce Xerces, mais il n'analyse pas les groupes de substitution d'éléments abstraits. Veuillez vous référer à ma question https://stackoverflow.com/questions/25203139/parsing-a-abstract-node-with-substitutiongroup-using-apache-xerces-api-in-java

 1
Author: Binyamin Melepat, 2017-05-23 12:25:46

Comme mentionné, un schéma est lui-même XML valide. Pour quoi voulez-vous le charger, validation? Si c'est le cas, il existe des classes pratiques dans le package javax.xml.validation.

 0
Author: Qwerky, 2010-10-22 12:56:30

Dépend de vos besoins spécifiques. Cette page donne un bon aperçu des principales options et les cas d'utilisation qu'ils soutiennent.

Une chose à penser: Selon la plate-forme sur laquelle vous déployez et les autres frameworks que vous utilisez, il peut déjà y avoir différentes API dans votre arborescence de dépendances (xerces est particulièrement courant dans les serveurs d'applications par exemple). Méfiez-vous des conflits de version qui peuvent être un cauchemar à isoler et à déboguer.

 0
Author: Andrew Harmel-Law, 2010-10-22 13:00:43