2012-03-31 11 views

Respuesta

6

El analizador Html Agility Pack trata el doctype como un nodo de comentario. Con el fin de añadir un tipo de documento a un documento HTML, simplemente añadir un nodo comentario con el tipo de documento deseado al principio del documento:

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

Tenga en cuenta, que mi código no comprueba la existencia de un tipo de documento .

8

Por lo que sé, AgilityPack no tiene un método directo para establecer el tipo de documento, pero como mencionó Hans, HAP trata al tipo de documento como un nodo de comentario. Así que se podría tratar de encontrar el tipo de documento existente en primer lugar, si no crear uno nuevo y pegar un valor deseado:

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

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

Desde 'DOCTYPE' se puede escribir con cualquier combinación de letras mayúsculas y minúsculas, tal vez'/comment() [starts-with (minúsculas (.), '

Cuestiones relacionadas