HTML Agility Pack - Wie kann ein Element an der Spitze des Head-Elements angehängt werden?

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

Frage

Ich versuche, HTML Agility Pack zu verwenden, um ein Skriptelement an den Anfang des HEAD-Abschnitts meines HTML anzuhängen. Die Beispiele, die ich bisher gesehen habe, verwenden einfach die AppendChild(element) -Methode, um dies zu erreichen. Ich brauche das Skript, das ich an den Kopfbereich angehängt habe, um anderen Skripten zu folgen. Wie kann ich das angeben?

Hier ist was ich versuche:

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

Ich möchte, dass ein Skript-Tag an der Spitze von HEAD hinzugefügt wird, anstatt am Ende angehängt zu werden.

Beliebte Antwort

In der Erkenntnis, dass dies eine alte Frage ist, gibt es auch die Möglichkeit, Kindelemente voranzustellen, die es damals noch nicht gab.

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


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum