For a project I'm working on, I need to convert .NET Framework types into XML Schema (XSD) types. I wrote a little function to do the translation:
public static string GetXsdTypeNameForType(Type t) { string rVal = string.Empty; switch (t.FullName) { case "System.Boolean": rVal = "boolean"; break; case "System.Byte": rVal = "unsignedByte"; break; case "System.Byte[]": rVal = "base64Binary"; break; case "System.DateTime": rVal = "dateTime"; break; case "System.Decimal": rVal = "decimal"; break; case "System.Double": rVal = "double"; break; case "System.Int16": rVal = "short"; break; case "System.Int32": rVal = "int"; break; case "System.Int64": rVal = "long"; break; case "System.SByte": rVal = "byte"; break; case "System.String": rVal = "string"; break; case "System.String[]": rVal = "ENTITIES"; break; case "System.TimeSpan": rVal = "duration"; break; case "System.UInt16": rVal = "unsignedShort"; break; case "System.UInt32": rVal = "unsignedInt"; break; case "System.UInt64": rVal = "unsignedLong"; break; case "System.Uri": rVal = "anyURI"; break; case "System.Xml.XmlQualifiedName": rVal = "QName"; break; } return rVal; }
NOTE: There are places where I had to make a decision as to which XSD type would map to System.TimeDate, System.String, System.Byte[], etc. And there's the question of which XSD type I will map to my custom Employee, Appointment or Cow types!
1 comment:
It would be more modern of me to write the "case" lines like this:
case "System.Boolean": return "boolean";
I guess I was still obsessed with the single return statement when I wrote this.
Post a Comment