Estoy intentando vincular un DataGrid de Silverlight a los resultados de una llamada de servicio WCF. No veía los datos mostrados en la cuadrícula, así que cuando revisé el depurador, noté que XDocument.Descendants() no devolvía ningún elemento, incluso cuando estaba ingresando un nombre de elemento válido. Aquí está el código XML que se devuelve desde el servicio:XDocument.Descendants() no devuelve ningún elemento
<ArrayOfEmployee xmlns="http://schemas.datacontract.org/2004/07/Employees.Entities" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Employee>
<BirthDate>1953-09-02T00:00:00</BirthDate>
<EmployeeNumber>10001</EmployeeNumber>
<FirstName>Georgi</FirstName>
<Gender>M</Gender>
<HireDate>1986-06-26T00:00:00</HireDate>
<LastName>Facello</LastName>
</Employee>
<Employee>
<BirthDate>1964-06-02T00:00:00</BirthDate>
<EmployeeNumber>10002</EmployeeNumber>
<FirstName>Bezalel</FirstName>
<Gender>F</Gender>
<HireDate>1985-11-21T00:00:00</HireDate>
<LastName>Simmel</LastName>
</Employee>
</ArrayOfEmployee>
Y aquí está el método que utilizo para cargar los resultados en una colección de objetos anónimos, utilizando LINQ to XML, y luego obligar a la colección a la red .
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs args)
{
if (args.Error != null) return;
var xml = XDocument.Parse(args.Result);
var employees = from e in xml.Descendants("Employee")
select new
{
EmployeeNumber = e.Element("EmployeeNumber").Value,
FirstName = e.Element("FirstName").Value,
LastName = e.Element("LastName").Value,
Birthday = e.Element("BirthDate").Value
};
DataGrid.SelectedIndex = -1;
DataGrid.ItemsSource = employees;
}
Cualquier idea de por qué xml.Descendants("Employee")
no devuelve nada?
Gracias!
Tenías razón, necesitaba incluir el espacio de nombres. ¡Gracias por la ayuda! –