Html Agility Pack - 從html文檔中獲取html片段

c# html html-agility-pack

使用html敏捷包;如何從完整的HTML文檔中提取html“片段”?為了我的目的,html“片段”被定義為<body>標籤內的所有內容。

例如:

樣本輸入:

<html>
   <head>
     <title>blah</title>
   </head>
   <body>
    <p>My content</p>
   </body>
</html>

期望的輸出:

<html>
   <head>
     <title>blah</title>
   </head>
   <body>
    <p>My content</p>
   </body>
</html>

理想情況下,如果內容不包含<html><body>元素(例如假設我不是一個完整的html文檔,我假設我首先傳遞了一個片段),我想要保持不變的內容。

誰能指出我正確的方向?

一般承認的答案

我認為你需要分成幾部分。

您可以按如下方式為body或html執行文檔的選擇節點

doc.DocumentNode.SelectSingleNode("//body") // returns body with entire contents :)

然後,您可以檢查條件的空值,如果提供了該值,則可以按原樣獲取字符串。

希望能幫助到你 :)


熱門答案

以下將有效:

public string GetFragment(HtmlDocument document)
{
   return doc.DocumentNode.SelectSingleNode("//body") == null ? doc.DocumentNode.InnerHtml : doc.DocumentNode.SelectSingleNode("//body").InnerHtml;
}



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