从html文档中获取span值
本文关键字:span 获取 html 文档 | 更新日期: 2023-09-27 18:26:26
我使用firefox-xpath插件获取了以下xpath
id('some_id')/x:ul/x:li[4]/x:span
使用html敏捷包,我可以获取id('some_id')/x:ul/x:li[4]
htmlDoc.DocumentNode.SelectNodes(@"//div[@id='some_id']/ul/li[4]").FirstOrDefault();
但是我不知道如何得到这个跨度值。
更新
<div id="some_id">
<ul>
<li><li>
<li><li>
<li><li>
<li>
Some text
<span>text I want to grab</span>
</li>
</ul>
</div>
您不需要使用LINQ2XML解析HTML,HTMLAgilityPack就是这样,而且通过以下方式更容易获得节点:
var html = @" <div id=""some_id"">
<ul>
<li></li>
<li></li>
<li></li>
<li>
Some text
<span>text I want to grab</span>
</li>
</ul>
</div>";
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var value = doc.DocumentNode.SelectSingleNode("div[@id='some_id']/ul/li/span").InnerText;
Console.WriteLine(value);
另一种方法(没有html敏捷性包)是使用LINQ2XML。您可以使用XDocument.Descendants方法获取span元素并获取其值:
var xml = @" <div id=""some_id"">
<ul>
<li></li>
<li></li>
<li></li>
<li>
Some text
<span>text I want to grab</span>
</li>
</ul>
</div>";
var doc = XDocument.Parse(xml);
Console.WriteLine(doc.Root.Descendants("span").FirstOrDefault().Value);
可以使用XElement扩展代码以检查div元素是否具有匹配的id。Attribute属性:
var doc = XDocument.Parse(xml);
Console.WriteLine(doc.Elements("div").Where (e => e.Attribute("id").Value == "some_id").Descendants("span").FirstOrDefault().Value);
此解决方案的一个缺点是,XML结构(HTML、XHTML)需要正确关闭,否则解析将失败。