Htmlagilitypack: crea un nodo de texto html

c# html-agility-pack

Pregunta

En HtmlAgilityPack, quiero crear HtmlTextNode , que es un HtmlNode (se hereda de HtmlNode) que tiene un InnerText personalizado.

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

El problema es que el textNode.OuterHtml y el textNode.InnerHtml serán iguales a "texto" después del método anterior.

por ejemplo, CreateHtmlTextNode("title", "blabla") generará: textNode.OuterHtml = "blabla" lugar de <Title>blabla</Title>

¿Hay alguna mejor manera de crear HtmlTextNode ?

Respuesta aceptada

Un HTMLTextNode contiene solo texto, sin etiquetas.

Es como el siguiente:

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

Estás buscando un HtmlNode estándar.

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

Asegúrese de llamar a HtmlDocument.HtmlEncode() en el texto que está agregando. Eso asegura que los caracteres especiales estén correctamente codificados.


Respuesta popular

Las siguientes líneas crean un html externo con contenido.

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;

Espero eso ayude.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué