コード例 #1
0
        public T Parse(string body)
        {
            T   result     = null;
            var parameters = new WxApiDictionary();

            try
            {
                using (var sr = new StringReader(body))
                {
                    var xmldes = new XmlSerializer(typeof(T));
                    result = (T)xmldes.Deserialize(sr);
                }

                var bodyDoc = XDocument.Parse(body).Element("xml");
                foreach (var element in bodyDoc.Elements())
                {
                    parameters.Add(element.Name.LocalName, element.Value);
                }
            }
            catch { }

            if (result == null)
            {
                result = Activator.CreateInstance <T>();
            }

            if (result != null)
            {
                result.Body = body;

                result.Parameters = parameters;
            }

            return(result);
        }
コード例 #2
0
        public T Parse(string body, string data)
        {
            T   result     = null;
            var parameters = new WxApiDictionary();

            try
            {
                var bodyDoc = XDocument.Parse(body).Element("xml");
                var rootDoc = XDocument.Parse(data).Element("root");
                bodyDoc.Add(rootDoc.Nodes());

                var sb = new StringBuilder();
                using (var writer = new StringWriter(sb))
                {
                    bodyDoc.Save(writer, SaveOptions.None);
                }

                using (var sr = new StringReader(sb.ToString()))
                {
                    var xmldes = new XmlSerializer(typeof(T));
                    result = (T)xmldes.Deserialize(sr);
                }

                foreach (var xe in bodyDoc.Elements())
                {
                    parameters.Add(xe.Name.LocalName, xe.Value);
                }
            }
            catch { }

            if (result == null)
            {
                result = Activator.CreateInstance <T>();
            }

            if (result != null)
            {
                result.Body = data;

                result.Parameters = parameters;
            }

            return(result);
        }