我有一个基本的HTML页面。它包括omo区域。同一课程8不同的内容。
<div class="omo-page-wrapper">
<div class="omo-part">
<div class="omo-img">...</div>
<div class="omo-info">
<div class="r-logo">...</div>
<div class="r-content font-hbold">
<i>Content Area 1</i>
<em>Content Area 2</em>
<a href="/blabla">Href</a>
</div>
</div>
</div>
<div class="omo-part">
<div class="omo-img">...</div>
<div class="omo-info">
<div class="r-logo">...</div>
<div class="r-content font-hbold">
<i>Content Area 1</i>
<em>Content Area 2</em>
<a href="/blabla2">Href2</a>
</div>
</div>
</div>
<div class="omo-part">...</div>
<div class="omo-part">...</div>
<div class="omo-part">...</div>
<div class="omo-part">...</div>
<div class="omo-part">...</div>
<div class="omo-part">...</div>
</div>
我想在所有r-content font-hbold的类中获取所有内容(i,em,href)。我使用了foreach,我获得了所有节点。但我没有得到ChildNodes ..
HtmlDocument document = new HtmlDocument();
document.LoadHtml(html);
var allElementsWithClassTalkMedallion = document.DocumentNode.SelectNodes("//*[contains(@class,'r-content font-hbold')]");
foreach (HtmlNode node in allElementsWithClassTalkMedallion)
{
dataTable.Rows.Add("i", "em", "href"); //??
}
return promotions;
8个(或更多)相同的类区域,3个子节点。我如何获得所有i,em,href内容?非常感谢。
答案 0 :(得分:0)
一种可能的方法是,您可以使用SelectSingleNode()
从每个node
变量中一次获取一个特定节点:
foreach (HtmlNode node in allElementsWithClassTalkMedallion)
{
var i = node.SelectSingleNode("i").InnerText.Trim();
var em = node.SelectSingleNode("em").InnerText.Trim();
var href = node.SelectSingleNode("href").InnerText.Trim();
dataTable.Rows.Add(i, em, href);
}