2010-12-03 15 views
2

html agility packを使用しています。どのように私は完全なhtml文書からhtml "断片"を抽出するでしょうか?私の目的のために、HTMLの「断片」は、<body>タグ内のすべてのコンテンツとして定義されています。Html Agility Pack - htmlドキュメントからhtmlフラグメントを取得する

例えば:

サンプル入力:

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

所望の出力:

<p>My content</p> 

理想的には、私はそれならば変更されていないコンテンツを返したいのですが<html>が含まれていませんでしたまたは<body>要素(たとえば、完全なhtml文書でなければ、私が最初にフラグメントを渡したと仮定してください)

誰かが正しい方向に向いていますか?

答えて

6

私はあなたが断片的にそれを行う必要があると思います。

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

を次のようにあなたは、あなたが基準のNULL値を確認することができ、それが提供される場合には、そのまま使用すると、文字列を取ることができ、本体やHTMLのための文書のSELECTNODESを行うことができます。

はそれが役立ちます:)

+0

いやはや...それはシンプルされている可能性があり考え出し。ありがとう! – DanP

4

以下が働くことを願っています:

public string GetFragment(HtmlDocument document) 
{ 
    return doc.DocumentNode.SelectSingleNode("//body") == null ? doc.DocumentNode.InnerHtml : doc.DocumentNode.SelectSingleNode("//body").InnerHtml; 
} 
関連する問題