validate validar example con against java xml xsd

validar - API de Java para analizar el archivo de esquema XSD



validate xsd java example (9)

Como se mencionó, un esquema es en sí mismo un XML válido. ¿Para qué quieres cargarlo, validación? Si es así, hay algunas clases prácticas en el paquete javax.xml.validation .

¿Hay una API de Java para analizar un archivo de esquema XSD?

Encontré XSOM , pero parece que ya no se mantiene.


Depende de cuáles sean sus requerimientos específicos. Esta página ofrece una buena visión general de las principales opciones y los casos de uso que admiten.

Una cosa en que pensar: dependiendo de la plataforma en la que esté implementando y otros marcos que esté utilizando, es posible que ya existan varias API en su árbol de dependencias (por ejemplo, xerces es particularmente común en los Servidores de Aplicaciones). Tenga cuidado con los conflictos de versión que pueden ser una pesadilla para aislar y depurar.



Pruebe EasyWSDL : puede analizar tanto las especificaciones de EasyWSDL como las de WSDL.


Puede utilizar XMLBeans http://xmlbeans.apache.org . Para la mayoría de los casos de uso alrededor del enlace XML / Java, parece que las personas se están moviendo a JAXB ya que está integrado. Pero para lo que quiere hacer, XMLBeans brinda acceso a algunas estructuras de datos de alto nivel que representan esquemas de una manera que es fácil atravesar.

Puedes empezar con algo como ...

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

Desde allí, debería poder averiguar cómo profundizar en el SchemaTypeSystem desde el JavaDoc.

Si alguien conoce una alternativa que sea tan conveniente y relativamente compatible, sería bueno saberlo. Estoy buscando activamente


Usando JDK 6 estándar:

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");




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(); } } }