Ejemplo n.º 1
0
        private MRUFileEntry DeserializeMRUFileEntry(System.Xml.XmlTextReader reader)
        {
            MRUFileEntry entry = new MRUFileEntry();

            while (reader.Read())
            {
                if (reader.NodeType == System.Xml.XmlNodeType.Element)
                {
                    if (reader.Name == "fileName")
                    {
                        entry.FileName = reader.ReadElementContentAsString();
                    }
                    else if (reader.Name == "shortName")
                    {
                        entry.ShortName = reader.ReadElementContentAsString();
                    }
                    else if (reader.Name == "modelContextName")
                    {
                        entry.ModelContextName = reader.ReadElementContentAsString();
                    }
                }
                else if (reader.NodeType == System.Xml.XmlNodeType.EndElement)
                {
                    if (reader.Name == "mruFileEntries")
                    {
                        reader.Skip();
                        break;
                    }
                }
            }

            return(entry);
        }
        public override WebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader(context.ResponseStream);
            BatchReceiveMessageResponse batchReceiveMessageResponse = new BatchReceiveMessageResponse();
            Message message = null;

            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                    case System.Xml.XmlNodeType.Element:
                        switch (reader.LocalName)
                        {
                            case MNSConstants.XML_ROOT_MESSAGE:
                                message = new Message();
                                break;
                            case MNSConstants.XML_ELEMENT_MESSAGE_ID:
                                message.Id = reader.ReadElementContentAsString();
                                break;
                            case MNSConstants.XML_ELEMENT_RECEIPT_HANDLE:
                                message.ReceiptHandle = reader.ReadElementContentAsString();
                                break;
                            case MNSConstants.XML_ELEMENT_MESSAGE_BODY_MD5:
                                message.BodyMD5 = reader.ReadElementContentAsString();
                                break;
                            case MNSConstants.XML_ELEMENT_MESSAGE_BODY:
                                message.Body = reader.ReadElementContentAsString();
                                break;
                            case MNSConstants.XML_ELEMENT_ENQUEUE_TIME:
                                message.EnqueueTime = AliyunSDKUtils.ConvertFromUnixEpochSeconds(reader.ReadElementContentAsLong());
                                break;
                            case MNSConstants.XML_ELEMENT_NEXT_VISIBLE_TIME:
                                message.NextVisibleTime = AliyunSDKUtils.ConvertFromUnixEpochSeconds(reader.ReadElementContentAsLong());
                                break;
                            case MNSConstants.XML_ELEMENT_FIRST_DEQUEUE_TIME:
                                message.FirstDequeueTime = AliyunSDKUtils.ConvertFromUnixEpochSeconds(reader.ReadElementContentAsLong());
                                break;
                            case MNSConstants.XML_ELEMENT_DEQUEUE_COUNT:
                                message.DequeueCount = (uint)reader.ReadElementContentAsInt();
                                break;
                            case MNSConstants.XML_ELEMENT_PRIORITY:
                                message.Priority = (uint)reader.ReadElementContentAsInt();
                                break;
                        }
                        break;
                    case System.Xml.XmlNodeType.EndElement:
                        if (reader.LocalName == MNSConstants.XML_ROOT_MESSAGE)
                        {
                            batchReceiveMessageResponse.Messages.Add(message);
                        }
                        break;
                }
            }
            reader.Close();
            return batchReceiveMessageResponse;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// deserialize xml document to name and description and optionally fill stream with content
        /// </summary>
        /// <param name="xml">xml containing data</param>
        /// <param name="name">Name attribute in xml</param>
        /// <param name="description">description attribute</param>
        /// <param name="outputStream">null if no content is not required</param>
        public static void XmlToTempFile(string xml, string tmpFilePath, out string name, out string description, out FluidTrade.Reporting.Interfaces.IStaticReportTranslation translator)
        {
            Stream outputStream = null;

            if (string.IsNullOrEmpty(tmpFilePath) == false)
            {
                outputStream = File.Open(tmpFilePath, FileMode.CreateNew);
            }
            name        = null;
            description = null;
            string base64File = null;
            string base64TranslationContent = null;

            translator = null;
            //create the xmlReader to walk the xml doc
            using (StringReader stringReader = new StringReader(xml))
            {
                using (System.Xml.XmlTextReader xmlReader = new System.Xml.XmlTextReader(stringReader))
                {
                    xmlReader.WhitespaceHandling = System.Xml.WhitespaceHandling.Significant;
                    //read to get to the first node
                    xmlReader.Read();

                    //get the name and description attributes
                    name        = xmlReader.GetAttribute(Name);
                    description = xmlReader.GetAttribute(Description);


                    if (outputStream == null)
                    {
                        return;                        //dont need to do anymore
                    }
                    //get to the content
                    xmlReader.Read();
                    base64File = xmlReader.ReadElementContentAsString();

                    //get to the translator
                    if (xmlReader.NodeType != System.Xml.XmlNodeType.EndElement)
                    {
                        xmlReader.Read();
                        base64TranslationContent = xmlReader.ReadContentAsString();
                    }
                    xmlReader.ReadEndElement();
                }
            }

            //if no outputStream or no content in xml then nothing left to do
            if (outputStream == null || string.IsNullOrEmpty(base64File))
            {
                return;
            }

            //convert the content to bytes
            Byte[] bytes = Convert.FromBase64String(base64File);

            //write the bytes to the stream
            using (BinaryWriter binWriter = new BinaryWriter(outputStream))
            {
                binWriter.Write(bytes);
                binWriter.Flush();
            }


            if (string.IsNullOrEmpty(base64TranslationContent) == false)
            {
                //convert the content to bytes
                Byte[] translationBytes = Convert.FromBase64String(base64TranslationContent);

                System.Reflection.Assembly translationAssembly = AppDomain.CurrentDomain.Load(translationBytes);
                Type[] types = translationAssembly.GetTypes();
                foreach (Type t in types)
                {
                    if (t.GetInterface("FluidTrade.Reporting.Interfaces.IStaticReportTranslation") != null)
                    {
                        translator = Activator.CreateInstance(t) as FluidTrade.Reporting.Interfaces.IStaticReportTranslation;
                        break;
                    }
                }
            }
        }