我正在使用HTML Agility Pack修改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文件不清楚。
我看到了这个问题(这是我的确切问题)here,但答案对我不起作用(也许是因为VB.NET,答案是C#)。
有人可以帮忙吗?
答案 0 :(得分:2)
Haven没有在 长 时间内写下任何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())
然后想,&#34; 没办法....它不能&#34; - 注意注释行:
<div>\r\n<div></div>\r\n<div></div>\r\n</div>
不幸的是,它可能是question you linked to was not marked answered - 输出:
的原因\r\n
最后,不要使用换行符Environment.NewLine
尝试<div>
<div></div>
<div></div>
</div>
, 工作和输出:
doOnNext
在C#中以任何一种方式工作。
答案 1 :(得分:0)
根据此answer,您需要添加代表回车符(\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
确实为我提供了编译错误。由于这不属于这个问题的范围,你没有把它作为一个问题提出来,我会假设它适合你。