C# 当I';我在寻找不同的节点

C# 当I';我在寻找不同的节点,c#,visual-studio-2010,html-agility-pack,C#,Visual Studio 2010,Html Agility Pack,我在使用html敏捷性时遇到问题。 我偶然发现了一个img src/img alt,在这里我必须获取数据 当我只需要一件事来获取数据时,一切都很好,但当数据更多时,它会像它应该的那样找到集合中的所有内容,但获取的数据总是来自集合中的第一个节点 HtmlNodeCollection collection = doc.DocumentNode.SelectNodes("//div[@class='listHolder']//article[@class='brochure openBrochureA

我在使用html敏捷性时遇到问题。 我偶然发现了一个img src/img alt,在这里我必须获取数据

当我只需要一件事来获取数据时,一切都很好,但当数据更多时,它会像它应该的那样找到集合中的所有内容,但获取的数据总是来自集合中的第一个节点

HtmlNodeCollection collection = doc.DocumentNode.SelectNodes("//div[@class='listHolder']//article[@class='brochure openBrochureAction']//div[@class='imgBrochure']");
                foreach (HtmlNode node in collection)
{
//Tried these examples:
NomeFolheto = node.SelectSingleNode("//div[@class='imageRatioHorizontal']//img[@alt]").GetAttributeValue("alt", "none").Trim();
string testeNome = node.SelectSingleNode("//div[@class='imageRatioHorizontal']//img/@alt").Attributes["alt"].Value;

string testeimagem = node.SelectSingleNode("//div[@class='imageRatioHorizontal']//img/@src").Attributes["src"].Value;
imagem = node.SelectSingleNode("//div[@class='imageRatioHorizontal']//img[@src]").GetAttributeValue("src", "none").Trim();
}
正如我所说,集合会找到它应该找到的所有节点,并正确地获取第一个值,但当它用于其他节点时,它获取的值来自第一个节点

我做错了什么?我检查了集合中的每个节点,它们有相同的“alt”属性和不同的“src”属性,但我知道,因为我调试过,它每次都会拾取第一个节点


提前感谢

您的xpath表达式都是从(文档的)根开始的。即使有对单个节点的引用,它仍然只是对整个树中该节点的引用

表达式应使用
/

HtmlNodeCollection collection = doc.DocumentNode.SelectNodes("//div[@class='listHolder']//article[@class='brochure openBrochureAction']//div[@class='imgBrochure']");
                foreach (HtmlNode node in collection)
{
//Tried these examples:
    NomeFolheto = node
        .SelectSingleNode(".//div[@class='imageRatioHorizontal']//img[@alt]")
        .GetAttributeValue("alt", "none").Trim();
    string testeNome = node
        .SelectSingleNode(".//div[@class='imageRatioHorizontal']//img/@alt")
        .Attributes["alt"].Value;

    string testeimagem = node
        .SelectSingleNode(".//div[@class='imageRatioHorizontal']//img/@src")
        .Attributes["src"].Value;
    imagem = node
        .SelectSingleNode(".//div[@class='imageRatioHorizontal']//img[@src]")
        .GetAttributeValue("src", "none").Trim();
}

您能提供一些HTML示例吗?您是否考虑过
HtmlNodeCollection
中的每个节点都有您在for each循环中选择的子节点?您确定没有在每次迭代中过度写入for循环中的值吗?是的,我确定,因为我没有在其他任何地方使用该变量,只是将该值添加到列表中,并对其进行了逐步调试。提供的答案很有效,我想不会那么容易,没有错。非常感谢你的解释和回答,效果很好:)