Hi,
I am able to Marshal sucessfully but Unmarshal throws
"DomainObjectDefs is required field" Exception. <DomainObjectDefs/>
element is produced during marshal but is not picked up by
Unmarshal.It produces different xml on Win98 and 2000.
Thanks for any help,
Sreekanth.
Win98:
<?xml version="1.0" encoding="UTF-8"?>
<package valid="true" process-project-ref-count="0">
<meta-data valid="true" any-object-count="0"/>
<namespace>namspace</namespace>
<created>created</created>
<domain-object-defs domain-object-def-count="0" valid="true"/>
<description>desc</description>
<action-defs valid="true" action-def-count="0"/>
</package>
Win2000:
<?xml version="1.0" encoding="UTF-8"?>
<Package namespace="namspace" Created="created">
<Description>desc</Description>
<DomainObjectDefs/>
<ActionDefs/>
</Package>
Here is the schema:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Package">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:group ref="MetaData"/>
<xsd:element ref="ProcessProjectRef" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="DomainObjectDefs" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="ActionDefs" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="namespace" type="xsd:anyURI" use="required"/>
<xsd:attribute name="Created" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:group name="MetaData">
<xsd:sequence>
<xsd:element ref="PackageData" minOccurs="0" maxOccurs="1"/>
<xsd:any minOccurs="0"/>
</xsd:sequence>
</xsd:group>
<xsd:element name="PackageData">
<xsd:complexType>
<xsd:sequence>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ProcessProjectRef">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="packageRef" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="DomainObjectDefs">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DomainObjectDef" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="fsPath" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ActionDefs">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ActionDef" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="fsPath" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
And code:
File file;
Package pack = new Package();
pack.setNamespace("namspace"); //String
pack.setCreated("created"); //String
pack.setDescription("desc"); //String
pack.setMetaData(new MetaData());
DomainObjectDefs defs = new DomainObjectDefs();
DomainObjectDef def = new DomainObjectDef();
def.setName("name");
def.setFsPath("fspath");
defs.addDomainObjectDef(def);
pack.setDomainObjectDefs(defs);
pack.setActionDefs(new ActionDefs());
file = new File( "package1.xml" );
try {
System.out.println(pack.toString());
Marshaller.marshal( pack, new FileWriter( file ) );
pack = (Package) Unmarshaller.unmarshal( Package.class, new FileReader( file ) );
System.out.println(pack.toString());
} catch (Exception e) {
e.printStackTrace();
}
