tipo nombre fin etiqueta encontrado elt elemento declaración debe cvc con coincidir beans xml jaxb schema xsd

xml - nombre - cvc-complex-type.2.4.a: se encontró contenido no válido comenzando por el elemento ''ProcessDesc''. Uno de ProcessName esperado



cvc-elt.1: no se ha encontrado la declaración del elemento ''beans''. (4)

Estoy validando mi objeto jaxb a través de la clase Validator. A continuación se muestra el código que estoy usando para validar el objeto jaxb. Pero al validarlo recibo este error.

jc = JAXBContext.newInstance(obj.getClass()); source = new JAXBSource(jc, obj); Schema schema = schemaInjector.getSchema(); Validator validator = schema.newValidator(); validator.validate(source);

ERROR (SAXParseException): cvc-complex-type.2.4.a: se encontró contenido no válido comenzando por el elemento ''ProcessDesc''. Uno de ProcessName esperado

No entiendo lo que hice mal en mi xsd, que está causando este error. El elemento definido en mi archivo xsd está debajo del cual recibo un error.

<xs:schema xmlns:cc="http://www.ms.com/cm.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ms.com/cm.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:complexType name="Process"> <xs:sequence> <xs:element name="ProcessId" type="xs:int" /> <xs:element name="ProcessName" type="xs:string" /> <xs:element name="ProcessDesc" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType>

Por favor ayúdame a solucionar esto. Gracias.


Este es un error de validación de XSD simple ... w3c


Este tipo de errores se deben a uno de los siguientes motivos

El nombre del elemento está mal escrito.

El elemento no descrito en el esquema está tratando de ser utilizado.

Los elementos están en orden incorrecto.

Las definiciones de espacio de nombres declaradas en la etiqueta raíz o en un elemento principal no coinciden con el prefijo (o sin prefijo) utilizado en el elemento.


El código XML Sehema

<xs:complexType name="Process"> <xs:sequence> <xs:element name="ProcessId" type="xs:int" /> <xs:element name="ProcessName" type="xs:string" /> <xs:element name="ProcessDesc" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType>

describe algunos XML que deberían parecerse

<proc> <!-- of type Process --> <ProcessId>123</ProcessId> <ProcessName>procA</ProcessName> <ProcessDesc>A funny process</ProcessDesc> <!-- this could be omitted --> <proc>

Pero tus datos XML se ven como

<proc> <!-- of type Process --> <ProcessId>123</ProcessId> <ProcessDesc>A funny process</ProcessDesc> <!-- ... don''t know what follows -->

Si no le importa el orden de Id, Nombre, Desc, tendrá que cambiar el esquema XML. De lo contrario, tendrás que arreglar el XML (que es más fácil).

Si crees que "cualquier orden de elementos" es una buena idea, utiliza:

<xs:complexType name="Process"> <xs:all> <xs:element name="ProcessId" type="xs:int" /> <xs:element name="ProcessName" type="xs:string" /> <xs:element name="ProcessDesc" type="xs:string" minOccurs="0" /> </xs:all> </xs:complexType>


Si usa una secuencia, debe mantener el orden de cada elemento

Definición y uso El elemento de secuencia especifica que los elementos secundarios deben aparecer en una secuencia. Cada elemento secundario puede ocurrir de 0 a cualquier cantidad de veces.

ver aquí