コード例 #1
1
ファイル: LiteralBinder.cs プロジェクト: ajayumi/Jumony
    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 );
    }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
ファイル: LiteralBinder.cs プロジェクト: zpzgone/Jumony
        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);
        }
コード例 #4
0
ファイル: HtmlBinder.cs プロジェクト: neo2018/Jumony
        private void BindSimpleData( IHtmlElement element, object data )
        {
            var htmlContent = data as IHtmlContent;

              if ( htmlContent != null )
            element.InnerHtml( htmlContent.ToHtmlString() );
              else
            element.InnerText( data.ToString() );
        }
コード例 #5
0
        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;
            }
        }
コード例 #6
0
        private void BindSimpleData(IHtmlElement element, object data)
        {
            var htmlContent = data as IHtmlContent;

            if (htmlContent != null)
            {
                element.InnerHtml(htmlContent.ToHtmlString());
            }
            else
            {
                element.InnerText(data.ToString());
            }
        }
コード例 #7
0
ファイル: ScriptBinder.cs プロジェクト: ajayumi/Jumony
    /// <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 );
    }
コード例 #8
0
ファイル: LiteralBinder.cs プロジェクト: ajayumi/Jumony
    /// <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 );
      }
    }
コード例 #9
0
ファイル: OldHandler.cs プロジェクト: john123951/sweetfly.net
        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;
            }
        }
コード例 #10
0
        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;
            }
        }
コード例 #11
0
ファイル: LiteralBinder.cs プロジェクト: zpzgone/Jumony
        /// <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);
            }
        }
コード例 #12
0
        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;
            }

        }