Beispiel #1
0
        /// <summary>
        /// 获取帖子内容块列表
        /// </summary>
        /// <param name="sourceTopicContent"></param>
        /// <returns></returns>
        private static List <TopicContent> GetTopicContentList(this string sourceTopicContent)
        {
            List <TopicContent> contentList = new List <TopicContent>(0);

            if (!string.IsNullOrEmpty(sourceTopicContent) && sourceTopicContent.StartsWith("<TopicContent>") && sourceTopicContent.EndsWith("</TopicContent>"))
            {
                try
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.LoadXml(sourceTopicContent.Trim());
                    XmlNode rootNode = xmlDoc.SelectSingleNode("TopicContent");
                    if (null != rootNode && rootNode.HasChildNodes)
                    {
                        foreach (XmlNode node in rootNode.ChildNodes)
                        {
                            if (node.NodeType == XmlNodeType.Element)
                            {
                                //ContentType ct = (ContentType)Enum.Parse(typeof(ContentType), node.Name, true);
                                ContentType ct   = GetTopicContentType(node.Name);
                                byte[]      data = null;
                                switch (ct)
                                {
                                case ContentType.Image:
                                    ImageContent imageContent = node.GetImageContent();
                                    if (null != imageContent)
                                    {
                                        data = imageContent.ProtoBufSerialize <ImageContent>();
                                    }
                                    break;

                                case ContentType.Voice:
                                    VoiceContent voiceContent = node.GetVoiceContent();
                                    if (null != voiceContent)
                                    {
                                        data = voiceContent.ProtoBufSerialize <VoiceContent>();
                                    }
                                    break;

                                case ContentType.Video:
                                    VideoContent videoContent = node.GetVideoContent();
                                    if (null != videoContent)
                                    {
                                        data = videoContent.ProtoBufSerialize <VideoContent>();
                                    }
                                    break;

                                case ContentType.Address:
                                    AddressContent addressContent = node.GetAddressContent();
                                    if (null != addressContent)
                                    {
                                        data = addressContent.ProtoBufSerialize <AddressContent>();
                                    }
                                    break;

                                case ContentType.Telphone:
                                    TelphoneContent telphoneContent = node.GetTelphoneContent();
                                    if (null != telphoneContent)
                                    {
                                        data = telphoneContent.ProtoBufSerialize <TelphoneContent>();
                                    }
                                    break;

                                case ContentType.Contact:
                                    ContactContent contactContent = node.GetContactContent();
                                    if (null != contactContent)
                                    {
                                        data = contactContent.ProtoBufSerialize <ContactContent>();
                                    }
                                    break;

                                case ContentType.Text:
                                default:
                                    TextContent textContent = node.GetTextContent();
                                    if (null != textContent)
                                    {
                                        data = textContent.ProtoBufSerialize <TextContent>();
                                    }
                                    break;
                                }

                                TopicContent content = new TopicContent {
                                    ContentType = ct, Data = data
                                };
                                contentList.Add(content);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    ex.Error();
                }
            }
            return(contentList);
        }