从c#中获取数据,获取NullReference

时间:2015-06-17 22:07:00

标签: c# xml linq-to-xml

我目前正在从我获取的XML中提取数据的第一步,其中以下链接提供了我得到的响应:http://maps.google.com/maps/api/geocode/xml?address=AT,%20Wien

现在我尝试获取第一个元素的纬度和逻辑:

 string serviceUri = string.Format("http://maps.google.com/maps/api/geocode/xml?address=AT,", location);
        XmlDocument doc = new XmlDocument();
        XDocument X = XDocument.Load(serviceUri);

        var position = X.Element("GeoCodeResponse").Element("result");
        var position1= position.Element("geometry").Element("location");
        string latitude = position1.Element("lat").Value;
        string longitude = position1.Element("lng").Value;

但似乎我错过了对这个问题的理解,这里也回答了问题:C# extracting data from XML

请帮我理解一下, BR

2 个答案:

答案 0 :(得分:1)

尝试使用

var position = X.Root.Element("result");

如果在Visual Studio中调试代码,您将看到X.Element("GeoCodeResponse")返回null。并且您尝试在null上使用X.Element("")。您还可以在访问根节点之前检查null。

答案 1 :(得分:1)

解决方案很简单。

如果您正在拆分语句,例如

var root = X.Element("GeoCodeResponse");
var position = root.Element("result");

你会看到NPE被

抛出
var position = root.Element("result");

如果您正在查看debugmode中的' root'包含的内容。你会看到,那根' root'是' null'。所以没有元素' GeoCodeResponse'。 它应该像'GeocodeResponse'而你的解决方案是有效的。