1

We have the following xsd that is resulting in two different class structures in Java and C#. For the Java classes we are using xjc and for C# we are using xsd.exe to convert the xsd to classes.

<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema">
<s:element name="ContainerElement" type="Container" /> 
<s:complexType name="Container">
  <s:sequence>
    <s:element minOccurs="0" name="Patient" type="Patient" />
  </s:sequence>
</s:complexType>
<s:complexType name="Patient">
  <s:element minOccurs="0" name="Addresses" type="ArrayOfAddressAddress" />
</s:complexType>
<s:complexType name="ArrayOfAddressAddress">
  <s:sequence>
    <s:element maxOccurs="unbounded" minOccurs="0" name="Address" nillable="true" type="Address" />
  </s:sequence>
</s:complexType>

The pertinent Java classes that are output look like this

class Patient {
  protected ArrayOfAddressAddress addresses;
}
class ArrayOfAddressAddress  {
  protected List<Address> address;
}

The pertinent C# classes that are output look like this

class Patient {
  Address [] addressesField;
}

When we serialize an object of these classes to JSON the results are different. For Java we obtain:

"Patient" : {
  "Addresses": {
    "Address" : [
      {
      }
    ]
  }
}

For C# we obtain:

"Patient" : {
    "Addresses": [
        {
        }
    ]
}

Are there any command line arguments to xjc and xsd we might have overlooked to ensure the JSON output is identical?

user481779
  • 1,071
  • 2
  • 14
  • 28

0 Answers0