XML文档 - 未将对象引用设置为对象的实例

时间:2010-12-02 18:21:30

标签: c# xml google-maps

我正在一个网站上工作,我需要一个谷歌地图来显示网站成员的位置。

但是,在使用HTTP地理编码服务时,从返回的XML文档中获取数据时遇到了一些麻烦。当我将字符串放入浏览器时,它返回XML就好了,如果我将textbox.Text设置为文档InnerText,它也会显示它应该显示的内容。但是当我想从节点中提取值时,它表示对象引用未设置为对象的实例。

我这样做:

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;

我必须管理员,我还没有在C#中使用XML那么多,所以任何提示都将非常感谢! :-)还应该说上面的代码是在foreach循环中,循环遍历网站的成员。

提前多多感谢!

一切顺利,

编辑:对不起,我忘记了如何获取值! ;)

2 个答案:

答案 0 :(得分:4)

将“GeoCodeResponse”替换为“GeocodeResponse”

请注意代码中的大写字母C不正确。 Xml区分大小写。

答案 1 :(得分:1)

你是如何得到latNode和lonNode的?它似乎是那些无效的。

由于你是在循环中完成的,所有成员是否都成功了?也许你没有受到某些地址的影响,所以文档中的lat / long节点可能不存在?

确实无法从您发布的代码中确切地说出问题。使用您的调试器,并逐步执行代码以了解您未获得latNode的原因。

修改

这有效:

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

路径中有一点类型。 “GeocodeResponse”中的“code”应为小写。 XPath区分大小写。