Now I get this output:
..NET
100
50
02.05.2002 00:00:00
10000
True
Please see // HERE_________
import System.*;
import System.IO.*;
import System.Text.*;
import System.Xml.*;
import System.Xml.Serialization.*;
import System.Xml.Schema.*;
public class Group
{
/** @attribute SoapAttribute(Namespace =
http://www.cpandl.com) */
public String GroupName;
/** @attribute SoapAttribute(DataType = "base64Binary") */
public System.Byte GroupNumber[];
/** @attribute SoapAttribute(DataType = "date", AttributeName =
"CreationDate") */
public DateTime Today;
/** @attribute SoapElement(DataType = "nonNegativeInteger", ElementName
= "PosInt") */
public String PostitiveInt;
// This is ignored when serialized unless it's overridden.
/** @attribute SoapIgnore() */
public boolean IgnoreThis;
public GroupType Grouptype;
public Vehicle MyVehicle;
// The SoapInclude allows the method to return a Car.
/** @ attribute SoapInclude(Car.class.ToType()) */
public Vehicle myCar(String licNumber)
{
Vehicle v;
if (licNumber.Equals(""))
{
v = new Car();
v.licenseNumber = "!!!!!!";
}
else
{
v = new Car();
v.licenseNumber = licNumber;
}
return v;
} //myCar
} //Group
// SoapInclude allows Vehicle to accept Car type.
// HERE____________________________
/** @attribute SoapInclude(Car.class) */
public class Vehicle
{
public Vehicle()
{
}
public String licenseNumber;
public DateTime makeDate;
} //Vehicle
// _________________________________
public class Car extends Vehicle
{
} //Car
public class GroupType
{
public int member;
public GroupType()
{
member = 0;
}
public GroupType(int n)
{
member = n;
}
/** @attribute SoapEnum("Small") */
public static int A = 0;
/** @attribute SoapEnum("Large") */
public static int B = 1;
}
public class Run
{
public static void main(String[] args)
{
Run test = new Run();
test.SerializeOriginal("SoapOriginal.xml");
test.SerializeOverride("SoapOverrides.xml");
test.DeserializeOriginal("SoapOriginal.xml");
test.DeserializeOverride("SoapOverrides.xml");
} //main
public void SerializeOriginal(String filename)
{
// Create an instance of the XmlSerializer class.
XmlTypeMapping myMapping = (new
SoapReflectionImporter()).ImportTypeMapping (Group.class.ToType());
XmlSerializer mySerializer = new XmlSerializer(myMapping);
Group myGroup = MakeGroup();
// Writing the file requires a TextWriter.
XmlTextWriter writer = new XmlTextWriter(filename,
Encoding.get_UTF8());
writer.set_Formatting(Formatting.Indented);
writer.WriteStartElement("wrapper");
// Serialize the class, and close the TextWriter.
mySerializer.Serialize(writer, myGroup);
writer.WriteEndElement();
writer.Close();
} //SerializeOriginal
public void SerializeOverride(String filename)
{
// Create an instance of the XmlSerializer class
// that overrides the serialization.
XmlSerializer overRideSerializer = CreateOverrideSerializer();
Group myGroup = MakeGroup();
// Writing the file requires a TextWriter.
XmlTextWriter writer = new XmlTextWriter(filename,
Encoding.get_UTF8());
writer.set_Formatting(Formatting.Indented);
writer.WriteStartElement("wrapper");
// Serialize the class, and close the TextWriter.
overRideSerializer.Serialize(writer, myGroup);
writer.WriteEndElement();
writer.Close();
} //SerializeOverride
private Group MakeGroup()
{
// Create an instance of the class that will be serialized.
Group myGroup = new Group();
// Set the object properties.
myGroup.GroupName = ".NET";
System.Byte hexByte[] = new System.Byte[] { (System.Byte)100,
(System.Byte)50 };
myGroup.GroupNumber = hexByte;
DateTime myDate = new DateTime(2002, 5, 2);
myGroup.Today = myDate;
myGroup.PostitiveInt = "10000";
myGroup.IgnoreThis = true;
myGroup.Grouptype = new GroupType(GroupType.B);
Car thisCar = ( Car)myGroup.myCar("1234566");
myGroup.MyVehicle = thisCar;
return myGroup;
} //MakeGroup
public void DeserializeOriginal(String filename)
{
// Create an instance of the XmlSerializer class.
XmlTypeMapping myMapping = (new
SoapReflectionImporter()).ImportTypeMapping(Group.class.ToType());
XmlSerializer mySerializer = new XmlSerializer(myMapping);
// Reading the file requires an XmlTextReader.
XmlTextReader reader = new XmlTextReader(filename);
reader.ReadStartElement("wrapper");
// Deserialize and cast the object.
Group myGroup;
myGroup = ((Group)(mySerializer.Deserialize(reader)));
reader.ReadEndElement();
reader.Close();
} //DeserializeOriginal
public void DeserializeOverride(String filename)
{
// Create an instance of the XmlSerializer class.
XmlSerializer overRideSerializer = CreateOverrideSerializer();
// Reading the file requires an XmlTextReader.
XmlTextReader reader = new XmlTextReader(filename);
reader.ReadStartElement("wrapper");
// Deserialize and cast the object.
Group myGroup;
myGroup = ((Group)(overRideSerializer.Deserialize(reader)));
reader.ReadEndElement();
reader.Close();
ReadGroup(myGroup);
} //DeserializeOverride
private void ReadGroup(Group myGroup)
{
Console.WriteLine(myGroup.GroupName);
Console.WriteLine(myGroup.GroupNumber.get_Item(0));
Console.WriteLine(myGroup.GroupNumber.get_Item(1));
Console.WriteLine(myGroup.Today);
Console.WriteLine(myGroup.PostitiveInt);
Console.WriteLine(myGroup.IgnoreThis);
Console.WriteLine();
} //ReadGroup
private XmlSerializer CreateOverrideSerializer()
{
SoapAttributeOverrides mySoapAttributeOverrides = new
SoapAttributeOverrides();
SoapAttributes soapAtts = new SoapAttributes();
SoapElementAttribute mySoapElement = new SoapElementAttribute();
mySoapElement.set_ElementName("xxxx");
soapAtts.set_SoapElement(mySoapElement);
mySoapAttributeOverrides.Add(Group.class.ToType(), "PostitiveInt",
soapAtts);
// Override the IgnoreThis property.
SoapIgnoreAttribute myIgnore = new SoapIgnoreAttribute();
soapAtts = new SoapAttributes();
soapAtts.set_SoapIgnore(false);