Добавить тип документа в HTML с помощью пакета Agility для HTML - PullRequest
7 голосов
/ 31 марта 2012

Я знаю, что легко добавлять элементы и атрибуты в документы HTML с помощью пакета agility HTML. Но как я могу добавить тип документа (например, HTML5) в HtmlDocument с помощью пакета html agility? Спасибо

Ответы [ 2 ]

11 голосов
/ 31 марта 2012

Насколько я знаю, в AgilityPack нет метода direct для установки типа документа, но, как упоминал Ганс, HAP рассматривает тип документа как узел комментария.Таким образом, вы можете сначала попытаться найти существующий тип документа, если не создать новый и вставить туда нужное значение:

var doctype = doc.DocumentNode.SelectSingleNode("/comment()[starts-with(.,'<!DOCTYPE')]");
if (doctype == null)
    doctype = doc.DocumentNode.PrependChild(doc.CreateComment());

doctype.InnerHtml = "<!DOCTYPE html>";
7 голосов
/ 31 марта 2012

Парсер Html Agility Pack рассматривает тип документа как узел комментария. Чтобы добавить тип документа в документ HTML, просто добавьте Узел комментария с желаемым типом документа в начале документа:

HtmlDocument htmlDoc = new HtmlDocument();

htmlDoc.Load("withoutdoctype.html");

HtmlCommentNode hcn = htmlDoc.CreateComment("<!DOCTYPE html>");

HtmlNode htmlNode = htmlDoc.DocumentNode.SelectSingleNode("/html");
htmlDoc.DocumentNode.InsertBefore(hcn, htmlNode);

htmlDoc.Save("withdoctype.html");

Обратите внимание, что мой код не проверяет наличие типа документа.

...