Question HTML Agility Pack - Comment ajouter des éléments en haut de l'élément Head?


J'essaie d'utiliser HTML Agility Pack pour ajouter un élément de script en haut de la section HEAD de mon fichier HTML. Les exemples que j'ai vus jusqu'ici utilisent simplement AppendChild(element) méthode pour y parvenir. 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'essaie:

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 ajoutée à la fin.


13
2018-05-15 22:04


origine


Réponses:


En réalisant qu'il s'agit d'une vieille question, il est également possible d'ajouter des éléments enfants qui n'existaient pas encore.

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

15
2017-07-19 06:24



Je l'ai..

HtmlNode a les méthodes suivantes:

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

7
2018-05-15 22:16