2012-03-31 10 views
6

मुझे पता है कि HTML अक्षरों पैक के साथ HTML दस्तावेज़ों में तत्वों और विशेषताओं को जोड़ना आसान है। लेकिन मैं एचटीएमएल चपलता पैक के साथ एचटीएमएल दस्तावेज़ पर एक डॉक्टरेट (उदा। एचटीएमएल 5 एक) कैसे जोड़ सकता हूं? धन्यवादएचटीएमएल एग्लिटी पैक के माध्यम से एचटीएमएल में एक डॉक्टरेट जोड़ें

उत्तर

6

एचटीएमएल एजिलिटी पैक पार्सर डक्ट टाइप को टिप्पणी नोड के रूप में मानता है। ,

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 का मौजूदा की जांच नहीं करता: एक HTML दस्तावेज करने के लिए एक डॉक प्रकार जोड़ने के लिए बस दस्तावेज़ की शुरुआत करने के लिए वांछित doctype के साथ एक टिप्पणी नोड जोड़ते ।

8

जहां तक ​​मुझे पता है कि AgilityPack में प्रत्यक्ष कार्यप्रणाली सेट करने के लिए विधि नहीं है, लेकिन जैसा कि हंस ने उल्लेख किया है, एचएपी डॉक्टरेट को टिप्पणी नोड के रूप में मानता है। तो तुम अगर एक नया एक नहीं बना सकते हैं और वहाँ एक वांछित मान पेस्ट, पहले मौजूदा 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' ऊपरी और निचले मामले के किसी भी मिश्रण के साथ लिखा जा सकता है, शायद'/टिप्पणी() [शुरू होता है (लो-केस (।), '

संबंधित मुद्दे