html 敏捷包两次获得相同的输出 c#
html agility pack getting same output twice c#
<div class="header">
<span id="content">test1</span>
</div>
<div class="header">
<span id="content">test2</span>
</div>
var web = new HtmlWeb();
var doc = web.Load(url)
var value = doc.DocumentNode.SelectNodes("//div[@class='header']")
foreach(var v in value)
{
var name = v.SelectSingleNode("//span[@id='content']")
Console.Writeline(name.OuterHtml);
}
上面的代码给了我两次输出 <span id="content">test1</span>
而不是 <span id="content">test2</span>
作为第二次输出。所以它得到了正确数量的节点,但没有得到正确的输出。
即使您使用的是当前节点,在 XPath 中使用 // 和 / 也会查询根节点。
请在您的代码中查看我的修复。
var value = doc.DocumentNode.SelectNodes("//div[@class='header']");
foreach (var v in value)
{
var name = v.SelectSingleNode("span[@id='content']");
Console.WriteLine(name.OuterHtml);
}
看到这个 fiddle。 https://dotnetfiddle.net/nih2lw
附带说明,id 属性在文档中应始终是唯一的。请改用 class。
<div class="header">
<span id="content">test1</span>
</div>
<div class="header">
<span id="content">test2</span>
</div>
var web = new HtmlWeb();
var doc = web.Load(url)
var value = doc.DocumentNode.SelectNodes("//div[@class='header']")
foreach(var v in value)
{
var name = v.SelectSingleNode("//span[@id='content']")
Console.Writeline(name.OuterHtml);
}
上面的代码给了我两次输出 <span id="content">test1</span>
而不是 <span id="content">test2</span>
作为第二次输出。所以它得到了正确数量的节点,但没有得到正确的输出。
即使您使用的是当前节点,在 XPath 中使用 // 和 / 也会查询根节点。
请在您的代码中查看我的修复。
var value = doc.DocumentNode.SelectNodes("//div[@class='header']");
foreach (var v in value)
{
var name = v.SelectSingleNode("span[@id='content']");
Console.WriteLine(name.OuterHtml);
}
看到这个 fiddle。 https://dotnetfiddle.net/nih2lw
附带说明,id 属性在文档中应始终是唯一的。请改用 class。