Htmlagilitypack: HTML-Textknoten erstellen

c# html-agility-pack

Frage

In HtmlAgilityPack möchte ich HtmlTextNode erstellen, das ein HtmlNode (inert von HtmlNode) ist, der einen benutzerdefinierten InnerText hat.

HtmlTextNode CreateHtmlTextNode(string name, string text)
{
     HtmlDocument doc = new HtmlDocument();
     HtmlTextNode textNode = doc.CreateTextNode(text);
     textNode.Name = name;
     return textNode;
}

Das Problem ist, dass textNode.OuterHtml und textNode.InnerHtml nach der obigen Methode gleich "text" sind.

zB CreateHtmlTextNode("title", "blabla") generiert: textNode.OuterHtml = "blabla" anstelle von <Title>blabla</Title>

Gibt es eine bessere Möglichkeit, HtmlTextNode zu erstellen?

Akzeptierte Antwort

Ein HTMLTextNode enthält nur Text, keine Tags.

Es ist wie folgt:

<div>                                   - HTML Node
    <span>text</span>                   - HTML Node
    This is the Text Node               - Text Node
    <span>text</span>                   - HTML Node
</div>

Sie suchen nach einem Standard-HtmlNode.

HtmlDocument doc = new HtmlDocument();
HtmlNode textNode = doc.CreateElement("title");
textNode.InnerHtml = HtmlDocument.HtmlEncode(text);

HtmlDocument.HtmlEncode() Sie darauf, HtmlDocument.HtmlEncode() für den hinzuzufügenden Text HtmlDocument.HtmlEncode() . Dies stellt sicher, dass Sonderzeichen richtig codiert sind.


Beliebte Antwort

Die folgenden Zeilen erstellen einen äußeren HTML-Code mit Inhalt

var doc = new HtmlDocument();

// create html document
var html = HtmlNode.CreateNode("<html><head></head><body></body></html>");
doc.DocumentNode.AppendChild(html);

// select the <head>
var head = doc.DocumentNode.SelectSingleNode("/html/head");

// create a <title> element
var title = HtmlNode.CreateNode("<title>Hello world</title>");

// append <title> to <head>
head.AppendChild(title);

// returns Hello world!
var inner = title.InnerHtml;

// returns <title>Hello world!</title>
var outer = title.OuterHtml;

Ich hoffe es hilft.



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