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); }
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 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); }
/// <summary> /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed. /// <example> /// xmlnodeeventhandler.BeginInvoke(sender, e, callback); /// </example> /// </summary> public static IAsyncResult BeginInvoke(this XmlNodeEventHandler xmlnodeeventhandler, Object sender, XmlNodeEventArgs e, AsyncCallback callback) { if (xmlnodeeventhandler == null) { throw new ArgumentNullException("xmlnodeeventhandler"); } return(xmlnodeeventhandler.BeginInvoke(sender, e, callback, null)); }
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)); } }