2015-10-15 5 views
0

В настоящее время я работаю над небольшим погодным приложением на C#. Для этого мне нужно извлечь данные из этого XML-файла: http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22london%22&format=xmlЯ не могу извлечь данные из этого XML

В этом конкретном случае мне нужно значение узла first/query/results/place/woeid. Я смотрел вокруг и пробовал много разных методов, но не смог получить никаких значений ни с одним из них. Мой текущий код выглядит следующим образом:

string query = String.Format("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22london%22&format=xml"); 
XmlDocument xml = new XmlDocument(); 
xml.Load(query); 

XmlNodeList nodeList = wData.DocumentElement.SelectNodes("/query/results/place"); 

foreach (XmlNode node in nodeList) 
{ 
    return node.SelectSingleNode("woeid").InnerText; 
} 
return "NO WOEID FOUND!"; 

Я только начинаю изучать C#, чтобы совершать какие-то глупые ошибки. Тем не менее, я бы очень признателен за любую помощь.

+2

Мое предложение было бы десериализации этого XML-документ в класс и использовать свойство этого класса, чтобы получить доступ к данные. –

ответ

0

Вы можете использовать XDocument

string query = String.Format("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22london%22&format=xml"); 
XDocument xml = XDocument.Load(query); 
XNamespace ns = "http://where.yahooapis.com/v1/schema.rng"; 
var woeid = xml.Element("query").Element("results").Elements(ns + "place").FirstOrDefault().Element(ns +"woeid").Value; 

Убедитесь, что вы проверить, есть ли какие-либо элементы в XDocuments

+0

Большое спасибо, это сработало! Очень ценю быстрый ответ. – user3252986

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