Как вы htmlencode используете html agility pack?


0

Кто-нибудь это сделал? В принципе, я хочу использовать html, сохраняя основные теги, такие как h1, h2, em и т. Д .; очистить все не-http-адреса в img и теги; и HTMLEncode каждый другой тег.

Я застрял в части кодирования HTML. Я знаю, чтобы удалить узел, который вы делаете «node.ParentNode.RemoveChild (node)»; где node является объектом класса HtmlNode. Вместо того, чтобы удалять узел, я хочу HTMLEncode.

1

Вам нужно будет удалить узел, представляющий элемент, который вам не нужен. Затем закодированный HTML должен быть добавлен в виде текстового узла.

Если вы не хотите, чтобы обработать детей элементов, которые вы хотите выбросить, вы должны быть в состоянии использовать только OuterHtml ... что-то подобное может работать:

node.AppendChild(new HtmlTextNode { Text = HttpUtility.HtmlEncode(nodeToDelete.OuterHtml) }); 

0

Ответ выше довольно много покрывает его. Однако есть одна вещь.

Вы не хотите изменять определенный узел, но все они, поэтому приведенный выше код, вероятно, будет методом, завернутым в оператор if (чтобы убедиться, что это тег, который вы хотите использовать для HtmlEncode). Более того, поскольку Agility Pack не раскрывает узлы по порядковым номерам, вы не можете перебирать весь документ. Рекурсия - это самый простой способ сделать это. Вы, наверное, уже знаете это ...

я столкнулся с подобной проблемой, и есть некоторый код оболочки (C#) вы более чем желателен использовать: http://dev.forrestcroce.com/normalizer-of-web-pages-qualifier-of-urls/2008-12-09/