コード例 #1
0
        private void btnHeader_Click(object sender, RoutedEventArgs e)
        {
            btnHeader.IsEnabled = false;
            btnConn.IsEnabled   = false;

            url           = txtUrl.Text.Trim();
            detailUrl     = txtDetailUrl.Text.Trim();
            get           = txtGET.Text.Trim();
            post          = txtPOST.Text.Trim();
            pageParamName = txtPageParamName.Text.Trim();
            pageParamPos  = cbbPageParamPos.SelectedItem.ToString();
            if (!int.TryParse(txtFirstPageIndex.Text.Trim(), out firstPageIndex))
            {
                firstPageIndex = 1;
            }
            bodyRegEx       = txtBodyRegEx.Text.Trim();
            headerRegEx     = txtHeaderRegEx.Text.Trim();
            maxPageRegEx    = txtMaxPageRegEx.Text.Trim();
            appendHeader    = txtAppendHeader.Text.Trim();
            appendBodyRegEx = txtAppendBodyRegEx.Text.Trim();
            key             = txtKey.Text.Trim();
            tableName       = txtTableName.Text.Trim();

            string html = HtmlHandler.GetHtml(url, get, post, pageParamName, 1, pageParamPos == "POST");

            lstHeader = HtmlHandler.ParseHeader(html, headerRegEx, maxPageRegEx, out minPage, out maxPage);
            minPage  -= (1 - firstPageIndex);
            maxPage  -= (1 - firstPageIndex);
            if (!string.IsNullOrEmpty(appendHeader))
            {
                int index = appendHeader.IndexOf('-');
                if (index > 0)
                {
                    int.TryParse(appendHeader.Substring(0, index), out detailUrlIndex);
                }
                if (index + 1 < appendHeader.Length)
                {
                    lstHeader.AddRange(appendHeader.Substring(index + 1).Split(','));
                }
            }
            if (lstHeader.Count <= 0)
            {
                lblTip.Content      = "未获取到表头。";
                btnHeader.IsEnabled = true;
                btnConn.IsEnabled   = true;
                return;
            }

            try
            {
                db.Execute("drop table " + tableName + "");
            }
            catch { }
            string dataType = connType == "OleDb" ? "text" : "nvarchar(MAX)";

            strHeader = "";
            StringBuilder sbFields = new StringBuilder();

            keyIndex = 0;
            for (int index = 0; index < lstHeader.Count; index++)
            {
                sbFields.Append(string.Format("{0} {1},", lstHeader[index].Trim(), dataType));
                strHeader += "" + lstHeader[index].Trim() + ",";
                if (lstHeader[index].Trim() == key)
                {
                    keyIndex = index;
                }
            }
            string sql = string.Format(@"create table {0}(
                                            {1}
                                         )", tableName, sbFields.ToString().TrimEnd(','));

            try
            {
                db.Execute(sql);
                lblTip.Content = "表头获取成功,表创建成功,共" + (maxPage + (1 - firstPageIndex)) + "页。";
            }
            catch (Exception ex)
            {
                lblTip.Content = null == ex.InnerException ? ex.Message : ex.InnerException.Message;
            }
            btnBody.IsEnabled   = true;
            btnHeader.IsEnabled = true;
            btnConn.IsEnabled   = true;
        }