API Java para processar o ficheiro XSD schema [fechado]

Existe uma API Java para processar um ficheiro XSD schema?

encontrei XSOM , mas parece que já não se mantém.

 17
Author: Peter Mortensen, 2010-10-22

9 answers

Utilizando a norma 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
 4
Author: Chris Aldrich, 2010-10-22 12:46:36

Pode utilizar XMLBeans http://xmlbeans.apache.org . para a maioria dos casos de utilização em torno de ligações XML/Java, as pessoas parecem estar a mudar-se para o JAXB, dado que está incorporado. Mas para o que você quer fazer, XMLBeans fornece acesso a algumas grandes estruturas de dados de alto nível que representam esquemas de uma forma que é fácil de atravessar.

Podes começar com algo do género...
SchemaTypeSystem sts = XmlBeans.compileXsd(new XmlObject[] {
    XmlObject.Factory.parse(xsdFile) }, XmlBeans.getBuiltinTypeSystem(), null);
A partir daí você deve ser capaz de descobrir como perfurar o sistema de esquemas a partir do JavaDoc. Se alguém conhece uma alternativa que seja tão conveniente e relativamente suportada, seria ótimo saber sobre ela. Estou a procurar activamente.
 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

Tente EasyWSDL - pode processar ambas as especificações XSD e WSDL.

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

JAXB

Veja esta pergunta

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

Usei esta cópia, mas não analisa os subgrupos de elementos abstractos. Por favor, consulte a minha pergunta 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

Como mencionado, um esquema é em si um XML válido. Queres carregá-lo para quê, validação? Se assim for, então existem algumas classes úteis no Pacote javax.xml.validation.

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

Depende das suas necessidades específicas. Esta Página dá uma boa visão geral das principais opções e dos casos de uso que suportam.

Uma coisa a pensar: dependendo da plataforma para a qual está a implantar e de outras estruturas que está a usar, pode já haver várias APIs na sua árvore de dependências (a xerces é particularmente comum em servidores de aplicações, por exemplo). Cuidado com os conflitos de versões que podem ser um pesadelo para isolar e depurar.

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