Htmlagilitypack:創建html文本節點

c# html-agility-pack

在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.OuterHtmltextNode.InnerHtml在上面的方法之後將等於“text”。

例如CreateHtmlTextNode("title", "blabla")將生成: textNode.OuterHtml = "blabla"而不是<Title>blabla</Title>

有沒有更好的方法來創建HtmlTextNode

一般承認的答案

HTMLTextNode只包含Text,沒有標籤。

它類似於以下內容:

<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() 。這可確保正確編碼特殊字符。


熱門答案

以下行創建帶有內容的外部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;

希望能幫助到你。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因