Я все еще участвую в работе с XML и C#.XML C# - попытка получить список элементов из XML-документа
Я искал много мест о том, как заставить это работать должным образом, но я пока не могу решить это, и мне было интересно, может ли кто-нибудь увидеть, где я ошибаюсь? Я пытаюсь получить список, содержащий значения узлов для расстояния и продолжительности для двух отдельных случаев. Сначала должна быть только одна пара, которая представляет собой общую пару dist/duration:/DirectionsResponse/route/leg/distance/value, затем я пытаюсь получить второй список, который будет содержать версию шагов:/DirectionsResponse/route/leg/шаги/расстояние/значение. Если я смогу получить вторую, я смогу разобраться в первой.
Большое спасибо Jaie
public class MyNode
{
public string Distance { get; set; }
public string Duration { get; set; }
}
public class Program
{
static void Main(string[] args)
{
//The full URI
//http://maps.googleapis.com/maps/api/directions/xml?`enter code here`origin=Sydney+australia&destination=Melbourne+Australia&sensor=false
//refer: https://developers.google.com/maps/documentation/webservices/
string originAddress = "Canberra+Australia";
string destinationAddress = "sydney+Australia";
StringBuilder url = new StringBuilder();
//http://maps.googleapis.com/maps/api/directions/xml?
//different request format to distance API
url.Append("http://maps.googleapis.com/maps/api/directions/xml?");
url.Append(string.Format("origin={0}&", originAddress));
url.Append(string.Format("destination={0}", destinationAddress));
url.Append("&sensor=false&departure_time=1343605500&mode=driving");
WebRequest request = HttpWebRequest.Create(url.ToString());
var response = request.GetResponse();
var stream = response.GetResponseStream();
XDocument xdoc = XDocument.Load(stream);
List<MyNode> routes =
(from route in xdoc.Descendants("steps")
select new MyNode
{
Duration = route.Element("duration").Value,
Distance = route.Element("distance").Value,
}).ToList<MyNode>();
foreach (MyNode route in routes)
{
Console.WriteLine("Duration = {0}", route.Duration);
Console.WriteLine("Distance = {0}", route.Distance);
}
stream.Dispose();
}
}
Удивительный! Большое спасибо atom.gregg. Он отлично работает сейчас :) – Jaie