c#嵌套循环
本文关键字:嵌套循环 | 更新日期: 2023-09-27 18:14:07
我在做一些循环时有麻烦。
我正在使用敏捷包。我有一个TXT文件,其中有几个链接(每行1个),对于TXT想要导航到页面的每个链接,然后将其提取为xpath并写入备忘录。
我遇到的问题,代码只执行文本的最后一行的过程。我哪里错了?
var Webget = new HtmlWeb();
foreach (string line in File.ReadLines("c:''test.txt"))
{
var doc = Webget.Load(line);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//*[@id='title-article']"))
{
memoEdit1.Text = node.ChildNodes[0].InnerHtml + "'r'n";
break;
}
}
尝试更改
memoEdit1.Text = node.ChildNodes[0].InnerHtml + "'r'n";
memoEdit1.Text += node.ChildNodes[0].InnerHtml + "'r'n";
每次都覆盖memoEdit1.Text
。试着
memoEdit1.Text += node.ChildNodes[0].InnerHtml + "'r'n";
代替-注意+=
而不是=
,它每次都添加新文本。
var Webget = new HtmlWeb();
var builder = new StringBuilder();
foreach (string line in File.ReadLines("c:''test.txt"))
{
var doc = Webget.Load(line);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//*[@id='title-article']"))
{
builder.AppendFormat("{0}'r'n", node.ChildNodes[0].InnerHtml);
break;
}
}
memoEdit1.Text = builder.ToString();
或者,使用LINQ:
var Webget = new HtmlWeb();
memoEdit1.Text = string.Join(
"'r'n",
File.ReadAllLines("c:''test.txt")
.Select (line => Webget.Load(line).DocumentNode.SelectNodes("//*[@id='title-article']").First().ChildNodes[0].InnerHtml));
如果您只在内部循环中选择1个节点,则使用SelectSingleNode
代替。在循环中连接字符串时,更好的做法是使用StringBuilder
:
StringBuilder builder = new StringBuilder();
var Webget = new HtmlWeb();
foreach (string line in File.ReadLines("c:''test.txt"))
{
var doc = Webget.Load(line);
builder.AppendLine(doc.DocumentNode.SelectSingleNode("//*[@id='title-article']").InnerHtml);
}
memoEdit1.Text = builder.ToString();
使用linq将会是这样:
var Webget = new HtmlWeb();
var result = File.ReadLines("c:''test.txt")
.Select(line => Webget.Load(line).DocumentNode.SelectSingleNode("//*[@id='title-article']").InnerHtml));
memoEdit1.Text = string.Join(Environment.NewLine, result);