XML document - Object reference not set to an instance of an object

I'm working on a website where I need a google map to display the positions of the members of the site.

However, i'm having a bit of trouble getting data from the returned XML document when using the HTTP Geocode Service. When I put the string into the browser it returns the XML just fine and if I set a textbox.Text to the documents InnerText it also displays as it should. But when I want to extract values from nodes, it says object reference not set to an instance of an object.

I'm doing it this way:

string address = m.getProperty("adresse").Value.ToString();
string zip = m.getProperty("postNummer").Value.ToString();
string city = m.getProperty("by").Value.ToString();

XmlDocument doc = new XmlDocument();
doc.Load("http://maps.googleapis.com/maps/api/geocode/xml?address=" + zip + "+" + city + "+" + address + "+DK&sensor=true");

XmlNode latNode = doc.SelectSingleNode("GeoCodeResponse/result/geometry/location/lat/text()");
XmlNode lonNode = doc.SelectSingleNode("GeoCodeResponse/result/geometry/location/lng/text()");

// The error occurs when the code hits these:
string lat = latNode.Value;
string lon = lonNode.Value;

I must admin that I haven't worked that much with XML in C# yet, so any hint will be greatly appreciated! :-) Should also say that the above code is in a foreach loop, looping through the members of the site.

Thanks a lot in advance!

All the best,

Bo

Edit: Sorry, I forgot to paste how I get the values! ;)

Answers


How did you get latNode and lonNode ? It seems to be those that are null.

Since you are doing it in a loop, does any of the members succeed ? Perhaps you are not getting a hit for some of the addresses, so the lat/long nodes in the document might not be there ?

There really is no way to tell the exact problem from the code you posted. Use your debugger, and step through the code to see why you are not getting latNode assigned.

Edit

This works:

XmlNode latNode = doc.SelectSingleNode("GeocodeResponse/result/geometry/location/lat/text()");
XmlNode lonNode = doc.SelectSingleNode("GeocodeResponse/result/geometry/location/lng/text()");

You had a little type in the path. "code" in "GeocodeResponse" should be lowercase. XPath is case sensitive.


Replace "GeoCodeResponse" with "GeocodeResponse"

Please note the capital C in Code is incorrect. Xml is case sensitive.


Need Your Help

Error passing a boost::bind function to an inner class

c++ boost

I've previously managed to store a boost::bind function in a variable, allowing me to call the function as needed at a later time. It's pretty straightforward, you simply do something like this:

Persistence in hibernate, when parent has children which same grand children

java hibernate jpa persistence

I have a use case where a parent's children map to same grand children(Which already exist in database). When i persist parent i get

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.