Exemple #1
0
        private static void ProcessChildNode(AngleSharp.Html.Dom.IHtmlDocument document, INodeList childs, Dictionary <string, string> dicKeywordMap)
        {
            for (var i = 0; i < childs.Length; i++)
            {
                var childNode = childs[i];

                // 只跑純文字
                if (childNode.NodeType != NodeType.Text)
                {
                    continue;
                }

                // 如果沒有可閱讀文字,跳過
                if (string.IsNullOrWhiteSpace(childNode.TextContent))
                {
                    continue;
                }


                // 切割文字
                var splitedResult = WordSplitor.SplitWords(childNode.TextContent, dicKeywordMap);

                // 如果沒有找到目標
                if (!splitedResult.Where(obj => obj.NodeType == TextNodeType.Link).Any())
                {
                    continue;
                }


                List <INode> nodeList = new List <INode>();

                foreach (var item in splitedResult)
                {
                    if (item is TextNode)
                    {
                        nodeList.Add(document.CreateTextNode(item.Context));
                    }
                    else
                    {
                        var linkItem = item as LinkNode;

                        var link = document.CreateElement("a");
                        link.SetAttribute("href", linkItem.LinkUrl.ToString());
                        link.SetAttribute("data-autolink", "bot");
                        link.TextContent = linkItem.Context;

                        nodeList.Add(link);
                    }
                }

                childNode.ReplaceWith(nodeList.ToArray());
            }
        }