HTML Agility Pack - Comment ajouter un élément en haut de l’élément Head?

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

Question

J'essaie d'utiliser HTML Agility Pack pour ajouter un élément de script en haut de la section HEAD de mon code HTML. Les exemples que j'ai vus jusqu'à présent utilisent simplement la méthode AppendChild(element) pour accomplir cela. J'ai besoin du script que j'ajoute à la section head avant d'autres scripts. Comment puis-je spécifier cela?

Voici ce que j'essaye:

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

Je voudrais qu'une balise de script soit ajoutée vers le haut de HEAD plutôt que d'être ajoutée à la fin.

Réponse populaire

Réalisant qu'il s'agit d'une vieille question, il existe également la possibilité d'ajouter des éléments enfants qui n'existaient peut-être pas.

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi