2012-03-31 4 views
6

HTML 민첩성 팩을 사용하여 HTML 문서에 요소 및 속성을 추가하는 것이 쉽다는 것을 알고 있습니다. 하지만 html 민첩성 팩을 사용하여 HtmlDocument에 doctype (예 : HTML5)을 추가 할 수 있나요? 감사합니다.HTML 민첩성 팩을 통해 HTML에 doctype 추가

답변

6

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

주의 사항 : HTML 문서에 문서 타입을 추가하기 위해 는 단순히 문서의 시작 부분에 원하는 문서 타입으로 주석 노드를 추가 .

8

내가 아는 한 AgilityPack에는 직접 메서드가 doctype을 설정하는 방법이 없지만 Hans가 언급했듯이 HAP은 doctype을 주석 노드로 처리합니다. 새로 생성하고 거기에 원하는 값을 붙여 넣을 수 없습니다 경우에 따라서는, 먼저 기존 문서 타입을 찾기 위해 시도 할 수 : DOCTYPE`가, 대문자와 소문자의 조합으로 기록 될 수

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

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

'때문에, 아마'/ (doctype ','DOCTYPE ') (시작과 함께 (시작과 함께 (소문자 (.),'

관련 문제