How do i add this schema or map the soap array to another type?
private void ValidateRemoteDomainObject(remote.webservice.entity o)
{
MemoryStream ms = new MemoryStream();
XmlSerializer xs = new XmlSerializer(o.GetType());
xs.Serialize(ms, o);
ms.Position = 0;
ValidateXmlSchema(new StreamReader(ms), "Schema.xsd");
}
void ValidateXmlSchema(TextReader reader, string schemaUri)
{
XmlReaderSettings xrs = new XmlReaderSettings();
xrs.ValidationType = ValidationType.Schema;
xrs.ValidationFlags &=
~XmlSchemaValidationFlags.AllowXmlAttributes;
xrs.ValidationFlags |=
XmlSchemaValidationFlags.ReportValidationWarnings;
xrs.ValidationEventHandler += new
ValidationEventHandler(ValidationEventHandler);
XmlSchema schema = XmlSchema.Read(
XmlReader.Create(schemaUri), this.ValidationEventHandler);
xrs.Schemas.Add(schema);
XmlReader xr = XmlReader.Create(reader, xrs);
while(xr.Read()){
// do something with node
}
}
void ValidationEventHandler(object sender, ValidationEventArgs e)
{
throw new ApplicationException(
String.Format("{0}", new object[] {e.Message}),
e.Exception
);
}
Joris van Lier
You need a schema for the namespace
http://schemas.xmlsoap.org/soap/encoding/ that defines the Array type. I
am not sure whether the various soap specifications define a schema,
perhaps someone in microsoft.public.dotnet.framework.aspnet.webservices
knows more.
--
Martin Honnen --- MVP XML
http://JavaScript.FAQTs.com/