HTML 민첩성 팩을 통해 HTML에 doctype 추가

.net c# html-agility-pack

문제

HTML 민첩성 팩을 사용하여 HTML 문서에 요소 및 특성을 추가하는 것이 쉽다는 것을 알고 있습니다. 하지만 HTML 민첩성 팩을 사용하여 HtmlDocument에 doctype (예 : HTML5 하나)을 추가하려면 어떻게해야합니까? 고맙습니다

수락 된 답변

Html Agility Pack 파서는 doctype을 주석 노드로 취급합니다. HTML 문서에 doctype을 추가하려면 원하는 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는 합법적입니까? 예, 이유를 알아보십시오.