Example #1
0
        public SmartMe.Core.Data.DictResult Parse( string html, Encoding encoding )
        {
            dictResult = new DictResult();
            HTMLparser oP = HtmlParserFactory.GetInstance();

            dictResult.DictionaryType = DictionaryType.Dict_cn;

            oP.Init(encoding.GetBytes(html));
            oP.SetEncoding(encoding);
            HTMLchunk oChunk = null;

            int state = 0;
            bool bEncodingSet = false;
            while ((oChunk = oP.ParseNext()) != null)
            {

                switch (oChunk.oType)
                {
                    case  HTMLchunkType.OpenTag:
                        HandleOpenTag(oChunk, ref state);

                printParams:
                        if (oChunk.sTag == "meta")
                        {
                            HandleMetaEncoding(oP, oChunk, ref bEncodingSet);
                        };
                    HandleParam(oChunk, ref state);

                    break;

                    case HTMLchunkType.CloseTag:
                    HandleCloseTag(oChunk, ref state);
                        break;

                    case HTMLchunkType.Text:
                        HandleText(oChunk, ref state);
                        break;

                    default:
                        break;
                }
            }

            return dictResult;
        }
Example #2
0
        public IQueryResultItem Search( InputQuery query )
        {
            SmartMe.Core.Data.DictResult emptyResult = new SmartMe.Core.Data.DictResult();
            emptyResult.DictionaryType = SmartMe.Core.Data.DictionaryType.Dict_cn;
            string url = "http://dict.cn/search?q=" + HttpUtility.UrlEncode( query.Text, Encoding.GetEncoding( "gb2312" ) );
            emptyResult.SearchUrl = url;
            if ( query == null || query.QueryType != SmartMe.Core.Data.InputQueryType.Text || query.Text == null || query.Text == "" )
            {
                return emptyResult;
            }

            string html = SmartMe.Web.Crawl.Crawler.Crawl( url, Encoding.GetEncoding( "gb2312" ) );
            if ( html == null || html == "" )
            {
                return emptyResult;
            }
            SmartMe.Web.Parse.DictCnParser parser = new SmartMe.Web.Parse.DictCnParser();
            SmartMe.Core.Data.DictResult result = parser.Parse( html, Encoding.GetEncoding( "gb2312" ) );
            result.SearchUrl = url;
            return result;
        }
Example #3
0
        public IQueryResultItem Search(InputQuery query)
        {
            SmartMe.Core.Data.DictResult emptyResult = new SmartMe.Core.Data.DictResult();
            emptyResult.DictionaryType = SmartMe.Core.Data.DictionaryType.Dict_cn;
            string url = "http://dict.cn/search?q=" + HttpUtility.UrlEncode(query.Text, Encoding.GetEncoding("gb2312"));

            emptyResult.SearchUrl = url;
            if (query == null || query.QueryType != SmartMe.Core.Data.InputQueryType.Text || query.Text == null || query.Text == "")
            {
                return(emptyResult);
            }

            string html = SmartMe.Web.Crawl.Crawler.Crawl(url, Encoding.GetEncoding("gb2312"));

            if (html == null || html == "")
            {
                return(emptyResult);
            }
            SmartMe.Web.Parse.DictCnParser parser = new SmartMe.Web.Parse.DictCnParser();
            SmartMe.Core.Data.DictResult   result = parser.Parse(html, Encoding.GetEncoding("gb2312"));
            result.SearchUrl = url;
            return(result);
        }
 private bool FindDictcnResult( object sender, out DictResult dictResult )
 {
     bool hasFound = false;
     DictResult result = null;
     if ( sender is ListBox )
     {
         ListBox sourceListBox = sender as ListBox;
         hasFound = FindDictcnResult( _currentQueryResult, DictionaryType.Dict_cn, out result );
     }
     dictResult = result;
     return hasFound;
 }
            private bool FindUIElements( DictResult dictResult, out ListBox listBox, out TabItem tabItem, out string engineName )
            {
                bool hasFound = false;
                switch ( dictResult.DictionaryType )
                {
                    case DictionaryType.Dict_cn:
                        {
                            hasFound = true;
                            listBox = _parent.DictcnOutputListBox;
                            tabItem = _parent.DictcnTabItem;
                            engineName = "Dictcn";
                            break;
                        }

                    default:
                        {
                            hasFound = false;
                            listBox = null;
                            tabItem = null;
                            engineName = "Unknown";
                            break;
                        }
                }
                return hasFound;
            }
            private bool FindDictcnResult( QueryResult queryResult, DictionaryType targetType, out DictResult dictResult )
            {
                bool hasFound = false;
                dictResult = null;
                if ( queryResult != null )
                {
                    if ( queryResult.DictResultItems != null )
                    {

                        foreach ( DictResult resultItem in queryResult.DictResultItems )
                        {
                            if ( resultItem != null && resultItem.DictionaryType == targetType )
                            {
                                dictResult = resultItem;
                                hasFound = true;
                                break;
                            }
                        }
                    }
                }
                return hasFound;
            }