有効なhtmlで改行を置き換えるにはどうすればよいですか?html要素で既に改行を置き換えてはいけません。

c# html-agility-pack

質問

私はこのような改行を含むプレーンテキストをいくつか持っています:

Dear Person,\r\nHello and welcome to this example.\r\nTodo: <ul><li>item 1</li>\r\n<li>item 2</li>\r\nThanks.

私はHtmlAgilityパック(必要な場合)を使ってHtmlをクリーンアップし、新しい改行を置き換えます。ただし、それらはHTMLタグのどこにあるのかを除いてBRで置き換えてください(ULタグのLIを参照)

regxやtext.Replace(Environment.NewLine, "<br/>")を使用してBRを簡単に置き換えることはできますが、タグ内のシナリオをどのように除外することができますか?

ありがとう。

人気のある回答

最上位のHTMLテキストノードのみを処理する必要があるようです(テキストノードには子ノードがありません)。

var html = "Dear Person,\r\nHello and welcome to this example.\r\nTodo: <ul><li>item 1</li>\r\n<li>item 2</li>\r\nThanks.";
var doc = new HtmlDocument();
doc.LoadHtml(html);
var textNodes = doc.DocumentNode.ChildNodes
    .OfType<HtmlTextNode>()
    .ToList();

foreach (var node in textNodes)
    node.Text = node.Text.Replace(Environment.NewLine, "<br />");

これは次のようになります:

Dear Person,<br />Hello and welcome to this example.<br />Todo: <ul><li>item 1</li>\r\n<li>item 2</li>\r\nThanks.</ul>


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ