C# Html Agility Pack ( SelectSingleNode )

c# html html-agility-pack parsing

Question

I'm trying to parse this field, but can't get it to work. Current attempt:

var name = doc.DocumentNode.SelectSingleNode("//*[@id='my_name']").InnerHtml;


<h1 class="bla" id="my_name">namehere</h1>

Error: Object reference not set to an instance of an object.

Appreciate any help.

@John - I can assure that the HTML is correctly loaded. I am trying to read my facebook name for learning purposes. Here is a screenshot from the Firebug plugin. The version i am using is 1.4.0.

http://i54.tinypic.com/kn3wo.jpg

I guess the problem is that profile_name is a child node or something, that's why I'm not able to read it?

Popular Answer

The reason your code doesn't work is because there is JavaScript on the page that is actually writing out the <h1 id='profile_name'> tag, so if you're requesting the page from a User Agent (or via AJAX) that doesn't execute JavaScript then you won't find the element.

I was able to get my own name using the following selector:

string name = 
    doc.DocumentNode.SelectSingleNode("//a[@id='navAccountName']").InnerText;



Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Is this KB legal? Yes, learn why
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Is this KB legal? Yes, learn why