다음과 같이 줄 바꿈이 포함 된 일반 텍스트가 있습니다.
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>