2017-06-10 7 views
0

私は(基本的にHTMLレポートを表します)のようになり、XML文書があるとします。XML文書のHTMLのテキスト版を抽出するにはどうすればよいですか?

:ようになり、単純なテキスト文字列には、この文書を変換私は(C#を使用して)したい

<html> 
<head>...</head> 
<body> 
    <div> 
    <table> 
    <tr> 
     <td>Stuff</td> 
    </tr> 
    <tr> 
     <td>More stuff<br /><br />More stuff on another line and some whitespace... </td> 
    </tr> 
    <tr> 
     <td> Some leading whitespace before this stuff<br />Stuff</td> 
    </tr> 
    </table> 
    </div> 
</body> 
</html> 

Stuff 
More stuff 

More stuff on another line and some whitespace... 
    Some leading whitespace before this stuff 
Stuff 

表の行を新しい行に変換し、セル内にインラインbrタグが追加された場所に新しい行を挿入するほどスマートにする必要があります。また、表のセル内の空白をそのまま保持する必要があります。私はXmlDocumentクラスを使ってみましたが、本体ノードでInnerTextメソッドを使用しましたが、探している出力を作成していないようです(改行と空白は元のままです)。これを行う簡単な方法はありますか?私はこれを行うための1つの方法は、HTMLを1つの文字列として抽出し、改行と空白を扱うためにその上にいくつかの正規表現を行うことであることを知っています。ありがとう!

+0

これは助けにはなりませんか? https://stackoverflow.com/questions/731649/how-can-i-convert-html-to-text-in-c – hardkoded

+0

MLはメタ言語(タグ付きデータ)です。 XMLとHTMLはどちらも違いのあるメタタイプのタイプなので、XMLからHTMLに移行することはできません。 XMLはHTML文書に埋め込まれることがありますが、XMLのないhtmlだけがあります。 – jdweng

答えて

0

これをしてくださいしてみてください。

var doc = XElement.Load("test.xml"); 

var sb = new StringBuilder(); 

foreach (var text in doc.DescendantNodes().Where(node => node.NodeType == XmlNodeType.Text)) 
{ 
    sb.AppendLine(((XText)text).Value); 
} 

より簡潔:

foreach (var text in doc.DescendantNodes().OfType<XText>()) 
{ 
    sb.AppendLine(text.ToString()); 
} 
関連する問題