Возможно ли выполнить итерацию по всем содержащимся в li элементам и извлечь их значения?
Из комментария к OP :
Doctype - это HTML 5, и это действительный код.- Radu
В этом случае можно просто использовать следующее выражение XPath :
div//li//text()
. Здесь выбираются все текстовые узлы, которые являются потомками всех * 1018.* элементы, являющиеся потомками любого div
элемента, являющегося дочерним элементом текущего узла.
Рекомендуется использовать выражение XPath для выбора узлов в XML (а HTML5 - это правильно сформированный XML), большинствопростой и более надежный способ, чем сделать это с трудом для построения, сложным для тестирования и трудным для понимания и поддержки регулярных выражений.
Вот полный пример кода :
using System;
using System.Xml;
class TestXPath
{
static void Main(string[] args)
{
string html5Text =
@"<html>
<head>
</head>
<body>
<div>
<ul>
<li>Line 1</li>
<li>Line 2</li>
<li>Line 3</li>
</ul>
</div>
</body>
</html>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(html5Text);
string xpathExpr = @"/*/*/div//li//text()";
XmlNodeList selection = doc.SelectNodes(xpathExpr);
foreach (XmlNode node in selection)
{
Console.WriteLine(node.OuterXml);
}
}
}
при выполнении вышеуказанного приложения выдается искомый правильный результат :
Line 1
Line 2
Line 3