I am validating my jaxb object through Validator class. Below is the code I am using to validate jaxb object. But While validating it I am getting this 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: invalid content was found starting with element 'ProcessDesc'. One of ProcessName expected
I don't understand what I have done wrong in my xsd which is causing this error. The element defined in my xsd file is below for which I am getting an 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>
Please help me to solve this. Thank You.
The XML Schema code
<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>
describes some XML which ought to look like
<proc> <!-- of type Process --> <ProcessId>123</ProcessId> <ProcessName>procA</ProcessName> <ProcessDesc>A funny process</ProcessDesc> <!-- this could be omitted --> <proc>
But your XML data looks like
<proc> <!-- of type Process --> <ProcessId>123</ProcessId> <ProcessDesc>A funny process</ProcessDesc> <!-- ... don't know what follows -->
If you don't care about the order of Id, Name, Desc you'll have to change the XML schema. Otherwise you'll have to fix the XML (which is easier).
If you think that "any order of elements" is a good idea, use:
<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>
These kind of errors are due to one of the following reason
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With