private T StrictDeserialize(Func <Object> block) { errors = new List <string> (); var Node = new XmlNodeEventHandler(serializer_UnknownNode); var Attr = new XmlAttributeEventHandler(serializer_UnknownAttribute); var Element = new XmlElementEventHandler(serializer_UnknownElement); serializer.UnknownNode += Node; serializer.UnknownAttribute += Attr; serializer.UnknownElement += Element; T result; try { result = (T)block(); } finally { serializer.UnknownNode -= Node; serializer.UnknownAttribute -= Attr; serializer.UnknownElement -= Element; } if (errors.Count > 0) { throw new System.Exception("XML for " + typeof(T) + " has invalid format:\n" + string.Join("\n", errors.ToArray())); } return(result); }
/// <summary> /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed. /// <example> /// xmlattributeeventhandler.BeginInvoke(sender, e, callback); /// </example> /// </summary> public static IAsyncResult BeginInvoke(this XmlAttributeEventHandler xmlattributeeventhandler, Object sender, XmlAttributeEventArgs e, AsyncCallback callback) { if (xmlattributeeventhandler == null) { throw new ArgumentNullException("xmlattributeeventhandler"); } return(xmlattributeeventhandler.BeginInvoke(sender, e, callback, null)); }
public static object InnerFromXml(string xml, Type type, XmlNodeEventHandler UnknownNode, XmlElementEventHandler UnknownElement, XmlAttributeEventHandler UnknownAttribute, UnreferencedObjectEventHandler UnreferencedObject) { if (string.IsNullOrEmpty(xml)) { return(null); } if (null == type) { return(null); } XmlSerializer xmlSerializer = new XmlSerializer(type); if (UnknownNode != null) { xmlSerializer.UnknownNode += UnknownNode; } if (UnknownAttribute != null) { xmlSerializer.UnknownAttribute += UnknownAttribute; } if (UnknownElement != null) { xmlSerializer.UnknownElement += UnknownElement; } //WriteStringToFile(xml, "synchroon-vanuit-PowerForms.xml"); using (TextReader r = new StringReader(xml)) { object result = xmlSerializer.Deserialize(r); return(result); } }
public T Deserialize <T>(string xml, XmlElementEventHandler unknownElementHandler, XmlAttributeEventHandler unknownAttributeHandler) { return(Deserialize <T>(StringUtils.UTF8.GetBytes(xml), unknownElementHandler, unknownAttributeHandler)); }
public T Deserialize <T>(byte[] bytes, XmlElementEventHandler unknownElementHandler, XmlAttributeEventHandler unknownAttributeHandler) { XmlSerializer serializer = new XmlSerializer(typeof(T)); serializer.UnknownElement += new XmlElementEventHandler(DefaultUnknownElementHandler); if (unknownElementHandler != null) { serializer.UnknownElement += unknownElementHandler; } if (unknownAttributeHandler != null) { serializer.UnknownAttribute += unknownAttributeHandler; } using (XmlReader reader = XmlReader.Create(new MemoryStream(bytes))) { return((T)serializer.Deserialize(reader)); } }
private static object FromXml(string xml, Type type, XmlNodeEventHandler UnknownNode, XmlElementEventHandler UnknownElement, XmlAttributeEventHandler UnknownAttribute, UnreferencedObjectEventHandler UnreferencedObject) { if (null == type) { return(null); } try { return(InnerFromXmlProvider.InnerFromXml(xml, type, UnknownNode, UnknownElement, UnknownAttribute, UnreferencedObject)); } catch (Exception) { return(InnerFromXmlProvider.InnerFromXml(xml, type, UnknownNode, UnknownElement, UnknownAttribute, UnreferencedObject)); } }
public static T FromXml <T>(string xml, XmlNodeEventHandler UnknownNode, XmlElementEventHandler UnknownElement, XmlAttributeEventHandler UnknownAttribute, UnreferencedObjectEventHandler UnreferencedObject) { T result = (T)FromXml(xml, typeof(T), UnknownNode, UnknownElement, UnknownAttribute, UnreferencedObject); return(result); }