[英]li in htmlagilitypack c#
我想从以下锂获得标签和强值
<div class="property-summary">
<h3>Listing summary</h3>
<ul>
<li>
<label>Reference</label>
<strong>BR-S-4301</strong>
</li>
<li>
<label>Type</label>
<strong>Apartment</strong>
</li>
<li>
<label>City</label>
<strong>Dubai</strong>
</li>
<li>
<label>Community</label>
<strong>Palm Jumeirah</strong>
</li>
<li>
<label>Subcommunity</label>
<strong>Tiara Residences</strong>
</li>
</ul>
</div>
这是我的C#代码
var dataNode = rootNode.SelectNodes("//div[normalize-space(@class)='property-summary']");
现在如何得到它? 下面对我不起作用
var Node = dataNode .SelectSingleNode(".//li/strong");
有几种方法可以做到这一点。
var labelNodes = doc.DocumentNode.SelectNodes("//div[normalize-space(@class)='property-summary']/ul/li/label");
var strongNodes = doc.DocumentNode.SelectNodes("//div[normalize-space(@class)='property-summary']/ul/li/strong");
foreach (var node in labelNodes)
{
Debug.WriteLine(node.InnerText.Trim());
}
foreach (var node in strongNodes)
{
Debug.WriteLine(node.InnerText.Trim());
}
var liNodes = doc.DocumentNode.SelectNodes("//div[normalize-space(@class)='property-summary']/ul/li");
foreach (var node in liNodes)
{
Debug.WriteLine(node.SelectSingleNode("label").InnerText.Trim());
Debug.WriteLine(node.SelectSingleNode("strong").InnerText.Trim());
}
在编写任何实际代码之前检查节点是否存在。
如果要获取所有label
标签,可以使用
IEnumerable<HtmlNode> labels = dataNode.Descendants("label");
和strong
标签一样
IEnumerable<HtmlNode> strongs = dataNode.Descendants("strong");
您还可以使用:
var dataNode = doc.DocumentNode.SelectNodes("//div[normalize-space(@class)='property-summary']")[0];
HtmlNodeCollection strongs = dataNode.SelectNodes(".//li/strong");
HtmlNodeCollection labels = dataNode.SelectNodes(".//li/label");
要从要素或标签中获取文字,请使用:
foreach (var strong in strongs)
{
string strongText = strong.InnerText.Trim();
}
您可以考虑切换到这些HTML解析库,这些库提供出色的jQuery选择器,例如功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.