Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cvc-complex-type.2.4.a: invalid content was found starting with element 'ProcessDesc'. One of ProcessName expected

Tags:

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.

like image 464
user656213 Avatar asked Aug 07 '14 04:08

user656213


2 Answers

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> 
like image 140
laune Avatar answered Oct 06 '22 21:10

laune


These kind of errors are due to one of the following reason

  1. Element name is mistyped.
  2. Element not described in the schema is trying to be used.
  3. Elements are in an incorrect order.
  4. Namespace definitions declared either in the root tag or a parent element doesn't match with the prefix (or no prefix) used in the element.
  5. Java object has a null field required in XSD
like image 22
Mohit Singh Avatar answered Oct 06 '22 19:10

Mohit Singh