public static System.Object importXml(System.IO.Stream stream) { Type objType = null; Object member = null; FieldInfo fi; String temp = ""; XmlReader xmlReader = XmlReader.Create(stream); while (xmlReader.Read()) { switch (xmlReader.Name) { case "Object": member = new Map.Object(); objType = member.GetType(); break; default: break; } if (member != null) break; } if (member == null) { xmlReader.Close(); return member; } while (xmlReader.Read()) { if (xmlReader.IsStartElement()) if (!xmlReader.IsEmptyElement) { fi = objType.GetField(xmlReader.Name); switch (fi.FieldType.FullName) { case "System.Drawing.PointF": temp = xmlReader.ReadElementContentAsString(); fi.SetValue(member, new System.Drawing.PointF(Convert.ToSingle(temp.Split(' ')[0]), Convert.ToSingle(temp.Split(' ')[1]))); break; case "System.Byte[]": temp = xmlReader.ReadElementContentAsString(); if (temp.Length > 0) { System.IO.MemoryStream memstream = new System.IO.MemoryStream(); System.IO.BinaryWriter wtr = new System.IO.BinaryWriter(memstream); System.Text.RegularExpressions.Regex bytes = new System.Text.RegularExpressions.Regex("[0-9|a-f|A-F]{2}"); foreach (System.Text.RegularExpressions.Match match in bytes.Matches(temp)) wtr.Write(Convert.ToByte(match.Value, 16)); fi.SetValue(member, memstream.ToArray()); wtr.Close(); } break; case "NoxShared.Map+Object+Property": fi.SetValue(member, xmlReader.ReadElementContentAs(typeof(System.Int16), null)); break; case "System.Collections.ArrayList": break; case "System.Collections.Generic.List<>": break; default: try { fi.SetValue(member, xmlReader.ReadElementContentAs(fi.FieldType, null)); } catch { } break; } } } xmlReader.Close(); return member; }
public static System.Object importXml(System.IO.Stream stream) { Type objType = null; Object member = null; FieldInfo fi; String temp = ""; XmlReader xmlReader = XmlReader.Create(stream); while (xmlReader.Read()) { switch (xmlReader.Name) { case "Object": member = new Map.Object(); objType = member.GetType(); break; default: break; } if (member != null) { break; } } if (member == null) { xmlReader.Close(); return(member); } while (xmlReader.Read()) { if (xmlReader.IsStartElement()) { if (!xmlReader.IsEmptyElement) { fi = objType.GetField(xmlReader.Name); switch (fi.FieldType.FullName) { case "System.Drawing.PointF": temp = xmlReader.ReadElementContentAsString(); fi.SetValue(member, new System.Drawing.PointF(Convert.ToSingle(temp.Split(' ')[0]), Convert.ToSingle(temp.Split(' ')[1]))); break; case "System.Byte[]": temp = xmlReader.ReadElementContentAsString(); if (temp.Length > 0) { System.IO.MemoryStream memstream = new System.IO.MemoryStream(); System.IO.BinaryWriter wtr = new System.IO.BinaryWriter(memstream); System.Text.RegularExpressions.Regex bytes = new System.Text.RegularExpressions.Regex("[0-9|a-f|A-F]{2}"); foreach (System.Text.RegularExpressions.Match match in bytes.Matches(temp)) { wtr.Write(Convert.ToByte(match.Value, 16)); } fi.SetValue(member, memstream.ToArray()); wtr.Close(); } break; case "NoxShared.Map+Object+Property": fi.SetValue(member, xmlReader.ReadElementContentAs(typeof(System.Int16), null)); break; case "System.Collections.ArrayList": break; case "System.Collections.Generic.List<>": break; default: try { fi.SetValue(member, xmlReader.ReadElementContentAs(fi.FieldType, null)); } catch { } break; } } } } xmlReader.Close(); return(member); }