private void BindElement( IHtmlElement element, Dictionary<string, string> dictionary ) { var text = element.InnerHtml(); foreach ( var pair in dictionary ) text = text.Replace( string.Format( "#{0}#", pair.Key ), pair.Value ); element.InnerHtml( text ); }
/// <summary> /// 对 HTML 中的 script 元素进行绑定 /// </summary> /// <param name="context">当前绑定上下文</param> /// <param name="element">当前绑定的元素(仅会对 script 元素起作用)</param> /// <returns>永远返回 false,表示其他绑定器可以继续执行</returns> public void BindElement(HtmlBindingContext context, IHtmlElement element) { if (!element.Name.EqualsIgnoreCase("script")) { return; } var script = element.InnerHtml(); script = scriptBindingExpression.Replace(script, match => { var expression = BindingExpression.ParseExpression(match.Groups["expression"].Value); if (expression == null) { return(match.Value); } object dataObject = context.GetValue(expression); var valueExpression = serializer.Serialize(dataObject); return(match.Groups["declare"].Value + valueExpression + ";"); }); element.InnerHtml(script); }
private void BindElement(IHtmlElement element, Dictionary <string, string> dictionary) { var text = element.InnerHtml(); foreach (var pair in dictionary) { text = text.Replace(string.Format("#{0}#", pair.Key), pair.Value); } element.InnerHtml(text); }
private void BindSimpleData( IHtmlElement element, object data ) { var htmlContent = data as IHtmlContent; if ( htmlContent != null ) element.InnerHtml( htmlContent.ToHtmlString() ); else element.InnerText( data.ToString() ); }
private ExamItem BuildEntity(int moduleId, IHtmlElement item) { string selector = @"td[width]"; if (false == item.Exists(selector)) { return(null); } var id_element = item.FindFirst(selector); if (id_element == null) { return(null); } try { var match = Regex.Match(id_element.InnerText(), @"\d+"); int id = Convert.ToInt32(match.Value.ToString().Trim()); string title = id_element.Parent().FindFirst(@".MsoNormal>span").InnerText().Trim().RemoveHtml().RemoveHtmlEncode(); string answer = item.FindFirst("#answer").InnerText().Trim(); string strExamType = item.FindFirst(".st_title").InnerText(); string examType = Regex.Match(strExamType, @"(?<=、).*").Value.Trim(); if (answer.StartsWith("答案:")) { answer = answer.Substring(3).Trim(); } var itemType = ItemTypeService.GetByText(examType); if (itemType == null) { logger.Info(string.Format("未匹配的题目类别[{0}],ExamId=[{1}]", examType, id)); } var model = new ExamItem() { Id = id, Title = title, Answer = answer, OriginalHtml = item.InnerHtml(), Module_Id = moduleId, ItemType = itemType != null ? itemType.Id : 0, CreateTime = DateTime.Now, DelFlag = false }; return(model); } catch (Exception ex) { WriteLog(item.ToString(), ex.Message); throw; } }
private void BindSimpleData(IHtmlElement element, object data) { var htmlContent = data as IHtmlContent; if (htmlContent != null) { element.InnerHtml(htmlContent.ToHtmlString()); } else { element.InnerText(data.ToString()); } }
/// <summary> /// 对 HTML 中的 script 元素进行绑定 /// </summary> /// <param name="context">当前绑定上下文</param> /// <param name="element">当前绑定的元素(仅会对 script 元素起作用)</param> /// <returns>永远返回 false,表示其他绑定器可以继续执行</returns> public void BindElement( HtmlBindingContext context, IHtmlElement element ) { if ( !element.Name.EqualsIgnoreCase( "script" ) ) return; var script = element.InnerHtml(); script = scriptBindingExpression.Replace( script, match => { var expression = BindingExpression.ParseExpression( match.Groups["expression"].Value ); if ( expression == null ) return match.Value; object dataObject = context.GetValue( expression ); var valueExpression = serializer.Serialize( dataObject ); return match.Groups["declare"].Value + valueExpression + ";"; } ); element.InnerHtml( script ); }
/// <summary> /// 绑定元素 /// </summary> /// <param name="context">当前绑定上下文</param> /// <param name="element">要绑定的元素</param> /// <returns>永远返回 false,表示继续进行后面的绑定</returns> public void BindElement( HtmlBindingContext context, IHtmlElement element ) { if ( !element.Document.HtmlSpecification.IsCDataElement( element.Name ) ) return; if ( element.Attribute( "literal-binder" ) == null ) return; lock ( element.SyncRoot ) { var text = element.InnerHtml(); text = LiteralBind( text ); } }
private ExamItem BuildEntity(int moduleId, IHtmlElement item) { try { var id_element = item.FindFirst(@"tr[valign]>td"); var match = Regex.Match(id_element.InnerText(), @"\d+"); int id = Convert.ToInt32(match.Value.Trim()); string title = id_element.NextElement().InnerText().Trim().RemoveHtml().RemoveHtmlEncode(); string answer = item.FindFirst("div[id]").InnerText().Trim().RemoveHtmlEncode(); string examType = item.PreviousElement().Descendants("td") .ElementAt(1) .InnerText().Trim().RemoveHtml().RemoveHtmlEncode(); if (answer.StartsWith("答案:")) { answer = answer.Substring(3).Trim(); } var itemType = ItemTypeService.GetByText(examType); if (itemType == null) { logger.Info(string.Format("未匹配的题目类别[{0}],ExamId=[{1}]", examType, id)); } var model = new ExamItem() { Id = id, Title = title, Answer = answer, OriginalHtml = item.InnerHtml(), Module_Id = moduleId, ItemType = itemType != null ? itemType.Id : 0, CreateTime = DateTime.Now, DelFlag = false }; return model; } catch (Exception ex) { WriteLog(item.ToString(), ex.Message); throw; } }
private ExamItem BuildEntity(int moduleId, IHtmlElement item) { try { var id_element = item.FindFirst(@"tr[valign]>td"); var match = Regex.Match(id_element.InnerText(), @"\d+"); int id = Convert.ToInt32(match.Value.Trim()); string title = id_element.NextElement().InnerText().Trim().RemoveHtml().RemoveHtmlEncode(); string answer = item.FindFirst("div[id]").InnerText().Trim().RemoveHtmlEncode(); string examType = item.PreviousElement().Descendants("td") .ElementAt(1) .InnerText().Trim().RemoveHtml().RemoveHtmlEncode(); if (answer.StartsWith("答案:")) { answer = answer.Substring(3).Trim(); } var itemType = ItemTypeService.GetByText(examType); if (itemType == null) { logger.Info(string.Format("未匹配的题目类别[{0}],ExamId=[{1}]", examType, id)); } var model = new ExamItem() { Id = id, Title = title, Answer = answer, OriginalHtml = item.InnerHtml(), Module_Id = moduleId, ItemType = itemType != null ? itemType.Id : 0, CreateTime = DateTime.Now, DelFlag = false }; return(model); } catch (Exception ex) { WriteLog(item.ToString(), ex.Message); throw; } }
/// <summary> /// 绑定元素 /// </summary> /// <param name="context">当前绑定上下文</param> /// <param name="element">要绑定的元素</param> /// <returns>永远返回 false,表示继续进行后面的绑定</returns> public void BindElement(HtmlBindingContext context, IHtmlElement element) { if (!element.Document.HtmlSpecification.IsCDataElement(element.Name)) { return; } if (element.Attribute("literal-binder") == null) { return; } lock (element.SyncRoot) { var text = element.InnerHtml(); text = LiteralBind(text); } }
private ExamItem BuildEntity(int moduleId, IHtmlElement item) { string selector = @"td[width]"; if (false == item.Exists(selector)) { return null; } var id_element = item.FindFirst(selector); if (id_element == null) { return null; } try { var match = Regex.Match(id_element.InnerText(), @"\d+"); int id = Convert.ToInt32(match.Value.ToString().Trim()); string title = id_element.Parent().FindFirst(@".MsoNormal>span").InnerText().Trim().RemoveHtml().RemoveHtmlEncode(); string answer = item.FindFirst("#answer").InnerText().Trim(); string strExamType = item.FindFirst(".st_title").InnerText(); string examType = Regex.Match(strExamType, @"(?<=、).*").Value.Trim(); if (answer.StartsWith("答案:")) { answer = answer.Substring(3).Trim(); } var itemType = ItemTypeService.GetByText(examType); if (itemType == null) { logger.Info(string.Format("未匹配的题目类别[{0}],ExamId=[{1}]", examType, id)); } var model = new ExamItem() { Id = id, Title = title, Answer = answer, OriginalHtml = item.InnerHtml(), Module_Id = moduleId, ItemType = itemType != null ? itemType.Id : 0, CreateTime = DateTime.Now, DelFlag = false }; return model; } catch (Exception ex) { WriteLog(item.ToString(), ex.Message); throw; } }