HTML Agility Pack - Come si può aggiungere l'elemento nella parte superiore dell'elemento Head?

.net asp.net-mvc-2 c# html-agility-pack

Domanda

Sto cercando di utilizzare HTML Agility Pack per aggiungere un elemento di script nella parte superiore della sezione HEAD del mio html. Gli esempi che ho visto finora usano il metodo AppendChild(element) per ottenere questo risultato. Ho bisogno dello script che aggiungo alla sezione principale prima di altri script. Come posso specificarlo?

Ecco cosa sto cercando:

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\"}'";

Vorrei che un tag di script venisse aggiunto all'inizio di HEAD anziché aggiunto alla fine.

Risposta popolare

Rendendosi conto che questa è una vecchia domanda, c'è anche la possibilità di anteporre elementi figli che potrebbero non essere esistiti allora.

// 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;



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché