Exemple #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);
        }
Exemple #2
0
        /// <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));
        }
Exemple #3
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 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);
        }