通過HTML Agility Pack將文檔類型添加到HTML

.net c# html-agility-pack

我知道使用HTML敏捷包向HTML文檔添加元素和屬性很容易。但是如何使用html敏捷包將文檔類型(例如HTML5)添加到HtmlDocument ?謝謝

一般承認的答案

Html Agility Pack解析器將doctype視為註釋節點。要將文檔類型添加到HTML文檔,只需將具有所需doctype的註釋節點添加到文檔的開頭:

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");

請注意,我的代碼不會檢查doctype的現有情況。


熱門答案

據我所知,AgilityPack沒有直接設置doctype的方法,但正如Hans所說,HAP將doctype視為註釋節點。因此,您可以先嘗試找到現有的doctype,如果沒有創建新的doctype並在那裡粘貼所需的值:

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

doctype.InnerHtml = "<!DOCTYPE html>";



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因