Mam nadzieję, że ktoś mi pomoże.HtmlAgilityPack i wybieranie węzłów i podwęzłów
przejdźmy że mam dokument HTML, który zawiera wiele elementów div jak w poniższym przykładzie:
<div class="search_hit">
<span prop="name">Richard Winchester</span>
<span prop="company">Kodak</span>
<span prop="street">Arlington Road 1</span>
</div>
<div class="search_hit">
<span prop="name">Ted Mosby</span>
<span prop="company">HP</span>
<span prop="street">Arlington Road 2</span>
</div>
jestem przy użyciu HtmlAgilityPack dostać dokument HTML. Co muszę wiedzieć, w jaki sposób mogę uzyskać rozpiętości dla każdego "search_hit" -div?
Moją pierwszą myślą było coś takiego:
foreach (HtmlAgilityPack.HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='search_hit']"))
{
foreach (HtmlAgilityPack.HtmlNode node2 in node.SelectNodes("//span[@prop]"))
{
}
}
Każdy div powinny być obiektem z dołączonych przęseł jak właściwości. I. e.
public class Record
{
public string Name { get; set; }
public string company { get; set; }
public string street { get; set; }
}
A ta lista zostanie wypełniona następnie:
public List<Record> Results = new List<Record>();
Ale jestem XPATH użyciu nie robi poszukiwania w podwęzeł jak należy to zrobić. Zgadza się, że wielokrotnie przeszukuje cały dokument.
Mam na myśli, że już działa to w taki sposób, że mam po prostu rozpiętość całej strony. Ale nie mam związku między przęsłami i divami. Znaczy: nie wiem już, która rozpiętość jest związana z tym divem.
Czy ktoś zna rozwiązanie? Już grałem tyle, że jestem totalnie zdezorientowany :)
Każda pomoc jest doceniana!
Zobacz moją odpowiedź dla sposobów parsowania kodu (pełne rozwiązanie robocze). –