在HtmlAgilityPack中,我想创建HtmlTextNode
,它是一个HtmlNode
(来自HtmlNode的inherts),它有一个自定义的InnerText。
HtmlTextNode CreateHtmlTextNode(string name, string text)
{
HtmlDocument doc = new HtmlDocument();
HtmlTextNode textNode = doc.CreateTextNode(text);
textNode.Name = name;
return textNode;
}
问题是,textNode.OuterHtml
和textNode.InnerHtml
在上述方法之后将等于“text”。
e.g。 CreateHtmlTextNode("title", "blabla")
会生成:
textNode.OuterHtml = "blabla"
代替<Title>blabla</Title>
有没有更好的方法来创建HtmlTextNode
?
答案 0 :(得分:17)
以下行创建带内容的外部html
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;
希望它有所帮助。
答案 1 :(得分:13)
HTMLTextNode
只包含文字,没有标签。
如下所示:
<div> - HTML Node
<span>text</span> - HTML Node
This is the Text Node - Text Node
<span>text</span> - HTML Node
</div>
您正在寻找标准的HtmlNode。
HtmlDocument doc = new HtmlDocument();
HtmlNode textNode = doc.CreateElement("title");
textNode.InnerHtml = HtmlDocument.HtmlEncode(text);
务必在您要添加的文字上致电HtmlDocument.HtmlEncode()
。这可以确保正确编码特殊字符。