protected void ExtractHotBoardEntries(HtmlNode rootNode) { IEnumerable<HtmlNode> linkNodes = rootNode.Descendants("a"); foreach (HtmlNode linkNode in linkNodes) { MitbbsBoardLinkMobile boardLink = new MitbbsBoardLinkMobile(); boardLink.ParentUrl = Url; if (boardLink.LoadFromHtml(linkNode)) { HotBoards.Add(MitbbsBoardLink.CreateFromMobileLink(boardLink)); } } }
public static MitbbsBoardLinkBase CreateFromMobileLink(MitbbsBoardLinkMobile mobileLink) { //return mobileLink; if (mobileLink.BoardName != null) { String fullUrl = String.Format(App.Settings.BuildUrl(fullBoardLinkTemplate), mobileLink.BoardName); return new MitbbsBoardLink() { Name = mobileLink.Name, Url = fullUrl, BoardName = mobileLink.BoardName }; } return mobileLink; }
public static MitbbsLink CreateLinkInstance(HtmlNode rootNode, String ParentUrl) { MitbbsLink generalLink = new MitbbsLink(); MitbbsLink linkInstance = null; if (!generalLink.LoadFromHtml(rootNode)) { return null; } String url = generalLink.Url; if (url.StartsWith(_boardEssenceUrlPrefix)) { linkInstance = new MitbbsBoardEssenceLink(); } else if (url.StartsWith(_topicEssenceUrlPrefix)) { linkInstance = new MitbbsTopicEssenceLink(); } else if (url.StartsWith(_boardGroupUrlPrefix)) { linkInstance = new MitbbsBoardGroupLink(); } else if (url.StartsWith(_boardUrlPrefix)) { linkInstance = new MitbbsBoardLinkMobile(); } else if (url.StartsWith(_topicUrlPrefix)) { linkInstance = new MitbbsSimpleTopicLinkMobile(); } else { return null; } linkInstance.ParentUrl = ParentUrl; if (!linkInstance.LoadFromHtml(rootNode)) { return null; } if (linkInstance is MitbbsBoardLinkMobile) { linkInstance = MitbbsBoardLink.CreateFromMobileLink(linkInstance as MitbbsBoardLinkMobile); } return linkInstance; }
public bool LoadFromHtml(HtmlNode rootNode, DataLoadedEventArgs loadedArgs) { bool isUserHomeLoaded = false; try { IEnumerable<HtmlNode> divNodes = rootNode.Descendants("div"); foreach (HtmlNode divNode in divNodes) { if (divNode.Attributes["id"].Value == "wenzhangyudu") { HtmlNodeCollection liNodes = divNode.ChildNodes[1].ChildNodes; for (int i = 0; i < liNodes.Count; i++) { HtmlNode liNode = liNodes[i]; if (liNode.Name == "li") { String bText = ""; IEnumerable<HtmlNode> bNodes = liNode.Descendants("b"); foreach (HtmlNode bNode in bNodes) { bText = HtmlUtilities.GetPlainHtmlText(bNode.FirstChild.InnerText); break; } IEnumerable<HtmlNode> linkNodes = liNode.Descendants("a"); foreach (HtmlNode linkNode in linkNodes) { String linkText = HtmlUtilities.GetPlainHtmlText(linkNode.FirstChild.InnerText); if (linkText == "站内邮箱") { MailboxUrl = linkNode.Attributes["href"].Value; isUserHomeLoaded = true; } else if(bText != "") { if (bText == "我的讨论区:") { MitbbsBoardLinkMobile boardLink = new MitbbsBoardLinkMobile(); boardLink.ParentUrl = Url; if (boardLink.LoadFromHtml(linkNode)) { MyBoards.Add(MitbbsBoardLink.CreateFromMobileLink(boardLink)); } } else if (bText == "我的最新文章:") { MitbbsSimpleTopicLinkMobile topicLink = new MitbbsSimpleTopicLinkMobile(); topicLink.ParentUrl = Url; if (topicLink.LoadFromHtml(linkNode)) { MyArticles.Add(MitbbsSimpleTopicLink.CreateFromMobileLink(topicLink)); } } } } } } } } } catch(Exception e) { loadedArgs.Error = e; } return isUserHomeLoaded; }