2011-05-15 10 views
13

मैं अपने एचटीएमएल के हेड सेक्शन के शीर्ष में एक स्क्रिप्ट तत्व जोड़ने के लिए एचटीएमएल एजिलिटी पैक का उपयोग करने की कोशिश कर रहा हूं। मैंने जो उदाहरण अभी तक देखा है, इसे पूरा करने के लिए बस AppendChild(element) विधि का उपयोग करें। मुझे इस स्क्रिप्ट की ज़रूरत है कि मैं कुछ अन्य स्क्रिप्ट से पहले आने के लिए हेड सेक्शन में शामिल हूं। मैं इसे कैसे निर्दिष्ट कर सकता हूं?एचटीएमएल एजिलिटी पैक - हेड एलिमेंट के शीर्ष पर तत्व कैसे जोड़ सकता है?

यहाँ मैं क्या कोशिश कर रहा हूँ है:

HtmlDocument htmlDocument = new HtmlDocument(); 
htmlDocument.Load(filePath); 
HtmlNode head = htmlDocument.DocumentNode.SelectSingleNode("/html/head"); 
HtmlNode stateScript = htmlDocument.CreateElement("script"); 
head.AppendChild(stateScript); 
stateScript.SetAttributeValue("id", "applicationState"); 
stateScript.InnerHtml = "'{\"uid\":\"testUser\"}'"; 

मैं एक स्क्रिप्ट टैग HEAD बजाय अंत में संलग्न के ऊपर की ओर जोड़ा जा करना चाहते हैं।

+1

इस प्रश्न को ढूंढने वाले अन्य लोगों को सिडनीोट: 'राज्यस्क्रिप्ट.इनर एचटीएमएल = ...' कभी-कभी आपके जावास्क्रिप्ट में अजीब चीजें करेगा। इसके आस-पास काम करने के लिए आप 'stateScript.AppendChild (htmlDocument.CreateTextNode (scriptText)) कर सकते हैं; ' – jp36

उत्तर

7

.. मिल गया

HtmlNode निम्न विधियों है:

HtmlNode.InsertBefore(node, refNode) 
HtmlNode.InsertAfter(nodeToAdd, refNode) 
+0

अपने उत्तर को" उत्तर "के रूप में चिह्नित करना न भूलें। –

+0

HTML स्रोत को संशोधित करते समय सावधान रहें। यह HTML कोड के अन्य हिस्सों को बदल सकता है जो शायद आप स्पर्श नहीं करना चाहते हैं:/' –

14

महसूस करते हुए कि यह कोई पुराना सवाल है, वहाँ भी है बच्चे तत्वों है कि तब अस्तित्व में है नहीं हो सकता है prepending की संभावना।

// Load content as new Html document 
HtmlDocument html = new HtmlDocument(); 
html.LoadHtml(oldContent); 

// Wrapper acts as a root element 
string newContent = "<div>" + someHtml + "</div>"; 

// Create new node from newcontent 
HtmlNode newNode = HtmlNode.CreateNode(newContent); 

// Get body node 
HtmlNode body = html.DocumentNode.SelectSingleNode("//body"); 

// Add new node as first child of body 
body.PrependChild(newNode); 

// Get contents with new node 
string contents = html.DocumentNode.InnerHtml; 
संबंधित मुद्दे