Html Agility Pack - Получить HTML-фрагмент из HTML-документа - PullRequest
2 голосов
/ 03 декабря 2010

Использование html пакета agility; Как извлечь HTML-фрагмент из полного HTML-документа? Для моих целей html-фрагмент определяется как все содержимое тегов <body>.

Например:

Пример ввода:

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

Желаемый выход:

<p>My content</p>

В идеале я хотел бы вернуть содержимое без изменений, если оно не содержало элемент <html> или <body> (например, предположим, что мне передали фрагмент в первую очередь, если он не был полным HTML-документ)

Кто-нибудь может указать мне правильное направление?

Ответы [ 2 ]

6 голосов
/ 03 декабря 2010

Я думаю, что вам нужно сделать это по частям.

вы можете сделать selectnodes документа для тела или HTML следующим образом

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

, затем вы можете проверить нулевые значения для критериев иесли это предусмотрено, вы можете взять строку как есть.

Надеюсь, это поможет:)

5 голосов
/ 04 декабря 2010

Будет работать следующее:

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