Разбить страницу html по определённым тегам - C#
Формулировка задачи:
Для создания презентаций я использую фреймворк reveal.js. При открытии такой презентации нужно достать текст между тегами <section> </section>. Нашёл регулярку, но она работает только с одной строкой
При чём могут быть вложенные слайды
// Тег для поиска, ищем теги <section></section>
string tag = "section";
string pattern = string.Format(@"\<{0}.*?\>(?<tegData>.+?)\<\/{0}\>", tag.Trim());
// \<{0}.*?\> - открывающий тег
// \<\/{0}\> - закрывающий тег
// (?<tegData>.+?) - содержимое тега, записываем в группу tegData
Regex regex = new Regex(pattern, RegexOptions.ExplicitCapture);
MatchCollection matches = regex.Matches(PresentationText);<section>
slides 1
</section>
<section>
<section>
slides 2_1
</section>
<section>
slides 2_2
</section>
</section>
Решение задачи: «Разбить страницу html по определённым тегам»
textual
Листинг программы
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument ();
htmlDoc.LoadHtml("загружаемый документ");
var root = htmlDoc.DocumentNode;
HtmlNode firstSect = root.SelectSingleNode("//div[@class='slides']"); // получаем див с классом слайдов
if (firstSect != null)
{
var firstLevelNodes=firstSect.SelectNodes("section");
foreach (var node in firstLevelNodes)
{
var child = node.SelectNodes("section");//получаем дочерние
if (child.Count > 0)
{
//что-то делаем
}
}
}