2010-12-30 7 views
1
zu extrahieren

Für das gegebene HTML Ich möchte den Wert von idWie würde ich HTMLAgilityPack verwenden Sie den Wert I

<div class="name" id="john-5745844"> 
<div class="name" id="james-6940673"> 

UPDATE wollen Dies ist, was ich im Moment

HtmlDocument htmlDoc = new HtmlDocument(); 
    htmlDoc.Load(new StringReader(pageResponse)); 
    HtmlNode root = htmlDoc.DocumentNode; 

    List<string> anchorTags = new List<string>(); 
    foreach (HtmlNode div in root.SelectNodes("//div[@class='name' and @id]")) 
    { 
     HtmlAttribute att = div.Attributes["id"]; 
     Console.WriteLine(att.Value); 
    } 

haben Der Fehler, den ich bekomme, ist an der foreach Linie, die angibt: Object reference not set to an instance of an object. Ich glaube, dieser Teil ist falsch "//div[@class='name' and @id]"

+0

Die XPath-Code alle divs mit Klasse „namen“ laden soll und welche das id-Attribut enthalten. Ist das HTML statisch? Oder mit js generiert? – NickAldwin

+0

@NickAldwin der ursprüngliche HTML ist komplizierter und ich denke, bei dem Versuch, das Problem zu vereinfachen, hat es die Lösung betroffen. Ich versuche, das ursprüngliche HTML jetzt einzuschließen. – super9

+0

Wie kann ich feststellen, ob der HTML-Code statisch ist oder mit js generiert wurde? Wenn Sie es erneut betrachten, sollte Ihre XPath-Abfrage korrekt sein. – super9

Antwort

1

von den Beispielen Seite geändert:

HtmlDocument doc = new HtmlDocument(); 
doc.Load("file.htm"); //or whatever HTML file you have 
foreach(HtmlNode div in doc.DocumentNode.SelectNodes("//div[@class='name' and @id]") 
{ 
    HtmlAttribute att = div["id"]; 
    //Do something with att.Value 
} 
Verwandte Themen