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; }
/// <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; } } } }