示例#1
0
        /// <summary>
        /// 过滤指定编辑器的属性和子元素
        /// </summary>
        /// <param name="node"></param>
        protected virtual void FiltesTag(IElement node)
        {
            string nodeName = node.LocalName.ToLower();
            //if (nodeName.Equals("#text")) return;
            //IElement element = node as IElement;
            var tag = Policy.Tag(nodeName);
            PolicyHtmlTagAction actoin = tag == null ? PolicyHtmlTagAction.Filter : tag.Action;

            switch (actoin)
            {
            case PolicyHtmlTagAction.Filter:
                //删除当前节点,但保留其有效的子节点
                PromoteChildren(node);
                return;

            case PolicyHtmlTagAction.Validate:
                //过滤当前元素的属性与及子节点
                ValidateAction(node, nodeName, tag);
                return;

            case PolicyHtmlTagAction.Truncate:
                //删除当前节点的所有属性以及子节点,但保留文本和备注节点。
                TruncateAction(node);
                return;

            default:
                //将当前节点从父节点中删除。
                var parentNode = node.Parent;
                parentNode.RemoveChild(node);
                break;
            }
        }
示例#2
0
        /// <summary>
        /// 过滤指定编辑器的属性和子元素
        /// </summary>
        /// <param name="node"></param>
        void FiltesTag(HtmlNode node)
        {
            string tagName = node.Name.ToLower();

            if (tagName.Equals("#text"))
            {
                return;
            }
            var tag = Policy.Tag(tagName);
            PolicyHtmlTagAction actoin = tag == null ? PolicyHtmlTagAction.Filter : tag.Action;

            switch (actoin)
            {
            case PolicyHtmlTagAction.Filter:
                ///删除当前节点,但保留其有效的子节点
                PromoteChildren(node);
                return;

            case PolicyHtmlTagAction.Validate:
                ///过滤当前元素的属性与及子节点
                ValidateAction(node, tagName, tag);
                return;

            case PolicyHtmlTagAction.Truncate:
                ///删除当前节点的所有属性以及子节点,但保留文本和备注节点。
                TruncateAction(node);
                return;

            default:
                ///将当前节点从父节点中删除。
                HtmlNode parentNode = node.ParentNode;
                parentNode.RemoveChild(node);
                break;
            }
        }