繁体   English   中英

C#嵌套循环

[英]C# Nested Loops

我无法进行一些循环。

我正在使用敏捷包。 我有一个包含多个链接的TXT文件(每行1个),对于txt,每个链接都希望txt导航到页面,然后将其提取到xpath中并写入便笺中。

我遇到的问题是代码仅执行txt的最后一行的过程。 我哪里错了?

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM