无法获取 img 标签内容

Not able to get img tag content

我正在使用 HtmlAgilityPack,我正在尝试获取这两个图像标签中的内容:

<div style="padding-left: 27px;">
    <img src="http://s1.swimg.net/gsmf/578/img/events/appearance.png" width="13" height="13" alt="Presenze" title="Presenze"> 6 
    <img src="http://s1.swimg.net/gsmf/578/img/events/G.png" width="13" height="13" alt="Goal" title="Goal"> 0 
</div>

如何查看每个 img 标签未关闭,我正在尝试使用此代码获取 60

Convert.ToInt32(div.SelectSingleNode(".//img[0]").InnerText.Trim())

div 变量包含上面的 html。问题是我在这段代码上得到 null(div.SelectSingleNode(".//img[0]").

可能是因为标签没有关闭,事实上我在 div 变量中只看到一个包含所有 img 标签的项目。

我该如何解决这个问题?

你得到 null 主要是因为 XPath 索引从 1 开始, 而不是 0。但是,目标文本被认为是 img 的兄弟而不是content/inner 文本。

也就是说,您可以使用 following-sibling::text() 并将结果限制为 1,以获得 img 元素之后最近的文本节点。例如,要获取第一个 img 元素之后的文本,您可以使用以下 XPath:

//img[1]/following-sibling::text()[1]

完成演示:

var raw = @"<div style=""padding-left: 27px;"">
    <img src=""http://s1.swimg.net/gsmf/578/img/events/appearance.png"" width=""13"" height=""13"" alt=""Presenze"" title=""Presenze""> 6 
    <img src=""http://s1.swimg.net/gsmf/578/img/events/G.png"" width=""13"" height=""13"" alt=""Goal"" title=""Goal""> 0 
</div>";
var document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(raw);
var query = "//img[1]/following-sibling::text()[1]";
var txt = document.DocumentNode.SelectSingleNode(query);
Console.WriteLine(Convert.ToInt32(txt.InnerText.Trim()));

dotnetfiddle

输出:

6