HTML 민첩성 팩을 사용하여 HTML 파일을 수정하려고합니다.
다음은 테이블을 포함하는 HTML 파일의 예입니다.
Dim document As New HtmlDocument
Dim tables As Array
document.Load(path_html)
Dim div1 As HtmlNode = HtmlNode.CreateNode("<div></div>")
Dim div2 As HtmlNode = HtmlNode.CreateNode("<div></div>")
tables = document.DocumentNode.Descendants("table").ToArray()
For Each tr As HtmlNode In tables.Descendants("tr").ToArray
tr.AppendChild(div1)
tr.AppendChild(div2)
Next
document.save(path_html)
다음은 HTML 파일의 결과입니다.
<div></div><div></div>
내가 원하는 것은 :
<div></div>
<div></div>
HTML 파일이 불명확 해지면 기본적으로 구현되어야한다고 생각합니다.
나는이 질문을 (내 정확한 문제입니다) 여기에 보았지만 대답은 나를 위해 (어쩌면 VB.NET과 대답은 C # 때문에) 작동하지 않습니다.
누구든지 도와 줄 수 있습니까?
오랫동안 vb.net
을 작성하지 않았으므로 C#
에서 처음 시도했습니다.
var document = new HtmlDocument();
var div = HtmlNode.CreateNode("<div></div>");
var newline = HtmlNode.CreateNode("\r\n");
div.AppendChild(newline);
for (int i = 0; i < 2; ++i)
{
div.AppendChild(HtmlNode.CreateNode("<div></div>"));
div.AppendChild(newline);
}
document.DocumentNode.AppendChild(div);
Console.WriteLine(document.DocumentNode.WriteTo());
훌륭한 작품 - 출력 :
<div>
<div></div>
<div></div>
</div>
그런 다음 생각 해봐, " 안돼 .... 그럴 수 없어 "- 주석 처리 된 줄을 메모하십시오 :
Dim document = New HtmlDocument()
Dim div = HtmlNode.CreateNode("<div></div>")
' this writes the literal string...
Dim newline = HtmlNode.CreateNode("\r\n")
' this works!
' Dim newline = HtmlNode.CreateNode(Environment.NewLine)
div.AppendChild(newline)
For i = 1 To 2
div.AppendChild(HtmlNode.CreateNode("<div></div>"))
div.AppendChild(newline)
Next
document.DocumentNode.AppendChild(div)
Console.WriteLine(document.DocumentNode.WriteTo())
불행히도 그것은 사실이며, 아마도 당신이 링크 한 질문에 대답하지 않은 이유는 무엇입니까? - 결과물 :
<div>\r\n<div></div>\r\n<div></div>\r\n</div>
마지막으로 바꿈 대신 열을 사용 \r\n
시도 Environment.NewLine
작업 및 출력 않는다 :
<div>
<div></div>
<div></div>
</div>
C #에서 작동합니다.
이 답 을 기반으로 캐리지 리턴 ( \r
)과 줄 바꿈 ( \n
)을 나타내는 노드를 추가해야합니다.
Dim newLineNode As HtmlNode = HtmlNode.CreateNode("\r\n")
귀하의 의견을 바탕으로 :
나는 이것을 시도했지만 HTML에 '\ r \ n'을 추가한다.
이미 시도한 대신 문자열 리터럴 "\ r \ n"을 출력합니다. 나도이 문제를 재현 할 수 있었다.
대신 줄 바꿈 인 <br>
태그를 사용하여 살펴보십시오.
Dim newLineNode As HtmlNode = HtmlNode.CreateNode("<br>")
귀하의 예제 코드를 기반으로 귀하의 코드는 다음과 같이 보일 것입니다 :
Dim newLineNode As HtmlNode = HtmlNode.CreateNode("<br>")
For Each tr As HtmlNode In tables.Descendants("tr").ToArray
tr.AppendChild(div1)
tr.AppendChild(newLineNode)
tr.AppendChild(div2)
Next
그러나 tables.Descendants("tr").ToArray
는 나에게 컴파일 오류를 제공했다. 이것이이 질문의 범위를 벗어나므로 문제를 제기하지 않았지만 나는 그것이 당신을 위해 일한다는 가정을 할 것입니다.