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는 합법적입니까? 예, 이유를 알아보십시오.