HtmlAgilityPack und Auswählen von Knoten und Unterknoten
Hoffe jemand kann mir helfen.
Können sagen, ich habe ein html-Dokument mit mehreren divs wie in diesem Beispiel:
<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>
Im mit HtmlAgilityPack, um die html-Dokument. Was ich wissen muss ist, wie bekomme ich die Spannweiten für die einzelnen "search_hit"-div?
Mein Erster Gedanke war etwas wie:
foreach (HtmlAgilityPack.HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='search_hit']"))
{
foreach (HtmlAgilityPack.HtmlNode node2 in node.SelectNodes("//span[@prop]"))
{
}
}
Jedes div-Element ein Objekt mit dem mitgelieferten umfasst als Eigenschaften.
I. e.
public class Record
{
public string Name { get; set; }
public string company { get; set; }
public string street { get; set; }
}
Und diese Liste wird dann gefüllt werden:
public List<Record> Results = new List<Record>();
Aber die XPATH-im mit ist nicht eine Suche in die Unterknoten wie er es tun sollte. Es scheint, dass es durchsucht das gesamte Dokument wieder und wieder.
Ich meine, ich hab schon das es funktioniert, dass ich nur das die Spannweiten der gesamten Seite. Aber dann habe ich keine Beziehung zwischen den beiden spans und divs. Bedeutet: ich weiß nicht mehr, welche Zeitspanne ist in Bezug auf die div.
Weiß jemand eine Lösung? Ich habe bereits rumprobiert, dass viel, dass ich bin Total verwirrt jetzt 🙂
Jede Hilfe ist willkommen!
InformationsquelleAutor der Frage The Jack | 2013-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgende Werke für mich. Der wichtige Teil ist nur als BeniBela angemerkt, fügen Sie einen Punkt im zweiten Aufruf von "SelectNodes'.
InformationsquelleAutor der Antwort shriek
Wenn Sie
//
ist, sucht es aus dem Dokument zu beginnen.Verwenden
.//
Suche alle von dem aktuellen KnotenOder löschen Sie das Präfix ganz suchen nur zur direkten Kinder:
InformationsquelleAutor der Antwort BeniBela
Erstens, werfen Sie einen Blick auf diese: Html-Agility-Pack - Problem Unterknoten auswählen
Hier eine voll funktionsfähige Lösung für Ihre Frage:
Wenn Sie Lesen die Frage, die ich wies Sie an, Sie werden sehen, dass tun
./span[@prop='name']
ist genau das gleiche, da diesespan
Knoten sind (direkte) Kinder derdiv
Knoten.Wenn die
span
Knoten nicht über dieprop
Attribute, und Sie möchten, weisen Sie je nach der Reihenfolge, die Sie tun können:InformationsquelleAutor der Antwort Oscar Mederos
Schande über mich 🙂
Alle hatten Sie Recht.
Habe das problem gefunden. Diese NullReferenceException gehalten, an mir zu nagen, so verbrachte ich mehr Zeit, und betrachten Sie es im detail.
Zwischen all den divs da war ein div mit der gleichen "class=" Suche-Treffer "" - Attribut, aber ohne die Spannweiten innerhalb. Das ist, warum es throughs einen Fehler bei der zweiten Schleife.
Den code oben funktioniert.
Vielen Dank Jungs für Eure Zeit und Hilfe!!!
InformationsquelleAutor der Antwort The Jack
Ich, dass. Klasse konvertieren id
InformationsquelleAutor der Antwort ibrahim ozboluk