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()); } }