Htmlagilitypack: créer un noeud de texte html

c# html-agility-pack

Question

Dans HtmlAgilityPack, je veux créer HtmlTextNode , qui est un HtmlNode (hérité de HtmlNode) qui a un InnerText personnalisé.

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

Le problème est que textNode.OuterHtml et textNode.InnerHtml seront égaux à "text" après la méthode ci-dessus.

Par exemple, CreateHtmlTextNode("title", "blabla") générera: textNode.OuterHtml = "blabla" au lieu de <Title>blabla</Title>

Existe-t-il un meilleur moyen de créer HtmlTextNode ?

Réponse acceptée

Un HTMLTextNode contient uniquement du texte, pas de balises.

C'est comme ça:

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

Vous recherchez un HtmlNode standard.

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

Assurez-vous d'appeler HtmlDocument.HtmlEncode() sur le texte que vous ajoutez. Cela garantit que les caractères spéciaux sont correctement codés.


Réponse populaire

Les lignes suivantes créent un html externe avec du contenu

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;

J'espère que cela aide.




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