2015-06-17 2 views
-1

Я в настоящее время делает свои первые шаги в извлечении данных из XML я получаю, где следующая ссылка предоставляет ответ я получаю: http://maps.google.com/maps/api/geocode/xml?address=AT,%20WienИзвлечение данных из XML в C# получение NullReference

Теперь я пытаюсь получить широту и logitude первого элемента:

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; 

Но, кажется, я missunderstood что-то от этого вопроса, который также ответил здесь: C# extracting data from XML

Пожалуйста, помогите мне понять это немного дальше,уш

+2

Возможный дубликат [Что такое исключение NullReferenceException и как его исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix- it) –

+0

Какая строка получает нулевую ссылку? – johnc

ответ

1

Решение прост.

Если вы разделив заявления как

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

Вы увидите, что NPE выбрасывается

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

Если вы ищете в режиме отладки, что содержит «корень». Вы увидите, что «root» имеет значение «null». Таким образом, нет элемента «GeoCodeResponse». Это должно быть namend как «GeocodeResponse», и вы работаете с решением.

0

Попробуйте использовать

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

при отладке коды в визуальной студии вы увидите, что X.Element("GeoCodeResponse") возвращает нуль. И вы пытаетесь использовать X.Element("") на null. Вы также можете проверить значение null до доступа к корневому узлу.

+0

Не могли бы вы пояснить, почему этот код отвечает на вопрос? Кодовые ответы [обескуражены] (http://meta.stackexchange.com/q/148272/274165), потому что они не учат решению. (Это сообщение было помечено как минимум одним пользователем, предположительно потому, что они считали, что ответ без объяснений должен быть удален.) –

Смежные вопросы