В моем приложении у меня есть служба WCF REST, которая вызывает звонок от моего клиента silverlight.Проблема при использовании службы WCF
private void btnGetEmployees_Click(object sender, RoutedEventArgs e)
{
try
{
WebClient wClient = new WebClient();
wClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wClient_OpenReadCompleted);
wClient.DownloadStringAsync(new Uri("http://localhost/DummyService/Service.svc/EmpRest", UriKind.Absolute));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
void wClient_OpenReadCompleted(object sender, DownloadStringCompletedEventArgs e)
{
XDocument xdStudent = XDocument.Parse(e.Result);
var Result = (from emp in xdStudent.Descendants("Employee")
select new Employee
{
EmpNo = emp.Element("EmpNo").Value,
EmpName = emp.Element("EmpName").Value
}
).ToList();
dgData.ItemsSource = Result;
}
Я могу получить результат POX от e.Result. Ниже приведен пример результатов
<ArrayOfEmployee xmlns="http://schemas.datacontract.org/2004/07/WCF_REST_Service" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Employee>
<EmpName>Emp_1</EmpName>
<EmpNo>101</EmpNo>
</Employee>
<Employee>
<EmpName>Emp_2</EmpName>
<EmpNo>102</EmpNo>
</Employee>
<Employee>
<EmpName>Emp_3</EmpName>
<EmpNo>103</EmpNo>
</Employee>
<Employee>
<EmpName>Emp_4</EmpName>
<EmpNo>104</EmpNo>
</Employee>
<Employee>
<EmpName>Emp_5</EmpName>
<EmpNo>105</EmpNo>
</Employee>
</ArrayOfEmployee>
Но когда я в XDocument Запрос Использование LINQ, я не получаю результат. Я для целей тестирования я загрузил XDocument вручную (не из службы), как показано ниже, и смог получить значения.
string xml = @"
<ArrayOfEmployee >
<Employee>
<EmpName>Emp_1</EmpName>
<EmpNo>101</EmpNo>
</Employee>
<Employee>
<EmpName>Emp_2</EmpName>
<EmpNo>102</EmpNo>
</Employee>
<Employee>
<EmpName>Emp_3</EmpName>
<EmpNo>103</EmpNo>
</Employee>
<Employee>
<EmpName>Emp_4</EmpName>
<EmpNo>104</EmpNo>
</Employee>
<Employee>
<EmpName>Emp_5</EmpName>
<EmpNo>105</EmpNo>
</Employee>
</ArrayOfEmployee>";
XDocument xdStudent = XDocument.Parse(xml);
Единственное изменение, которое я сделал это удалять атрибуты из корневого тега
xmlns="http://schemas.datacontract.org/2004/07/WCF_REST_Service" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
Я думаю, что эти атрибуты поднимают вопрос синтаксического анализа, когда я запрашивая XDocument с помощью LINQ.
Благодаря faester для Вашего ответа, я сделал изменения, что у предложенных, но все-таки я не могу получить данные, я сделал ниже изменения, XDocument xdStudent = XDocument. Синтаксический (e.Result); XNamespace ns = "http://schemas.datacontract.org/2004/07/WCF_REST_Service/"; Я также изменил запрос linq, а также EmpNo = emp.Element (ns + «EmpNo»). Значение, EmpName = emp.Element (ns + «EmpName»). Значение –