Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #4
0
        /// <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));
     }
 }