У меня есть файл XML, который я получаю через веб-службу. Файл выглядит следующим образом:Как получить данные из xml XDocument в C#?
<Z_STU_CRS_TRNS_DOC xmlns="http://testurl">
<Z_STATUS_CODE>0</Z_STATUS_CODE>
<Z_STATUS_MSG>Success</Z_STATUS_MSG>
<Z_STUDENT_ID_SUB_DOC xmlns="http://testurl">
<Z_STU_ID>000999999</Z_STU_ID>
</Z_STUDENT_ID_SUB_DOC>
<Z_CRSE_SUB_DOC xmlns="http://testurl">
<Z_COURSE xmlns="http://testurl">
<Z_CRSE_DATA>9999|199901|TEST|9999|1|S|Scuba Diving| |XX</Z_CRSE_DATA>
</Z_COURSE>
<Z_COURSE xmlns="testurl">
<Z_CRSE_DATA>9999|200001|TEST|999|3|A|English 101| |XX</Z_CRSE_DATA>
</Z_COURSE>
</Z_CRSE_SUB_DOC>
</Z_STU_CRS_TRNS_DOC>
Я могу потреблять услугу и проверить на наличие ошибок, но у меня трудное время фактически получая данные из файла XML XDocument.
protected void webClient_DownloadStringCompleted(object sender,
DownloadStringCompletedEventArgs e)
{
if (e.Error != null)
{
errorLabel.Text =
"The transaction failed. If you feel that you have reached " +
"this in error, please contact the help desk at xxx-xxx-xxxx.";
errorLabel.Visible = true;
return;
}
XDocument xml = XDocument.Parse(e.Result);
XNamespace ns = "http://testurl";
//Look for error code from WS
var field = xml.Descendants(ns + "Z_STATUS_CODE").FirstOrDefault();
if (field != null)
{
if (Convert.ToInt32((string)field.Value) == 1)
{
errorLabel.Text =
"The transaction failed, due to an invalid student id. If you " +
"feel that you have reached this in error, please contact " +
"the help desk at xxx-xxx-xxxx.";
errorLabel.Visible = true;
return;
}
}
Я пробовал много разных способов, но ничего не помогает. Может кто-нибудь помочь?
Какое сообщение об ошибке? В какой строке это происходит? –
Я предполагаю, что ошибки нет, но поле всегда равно null, когда этого не должно быть. 1) если вы удалите параметр из потомков, например var field = xml.Descendants(). FirstOrDefault(); поле, что вы ожидаете? 2) если это так, я уверен, что это проблема форматирования с (ns + "Z_STATUS_CODE"). Посмотрите на декодеры через код, чтобы увидеть, как пространство имен и имя элемента должны быть отформатированы. Имеет ли это смысл? – MatthewHagemann
В этом коде нет ошибки ... Я просто не могу понять, как получить данные. Я могу получить код состояния. Какие шаги я предпримлю, чтобы получить Z_CRSE_DATA из этого документа? – dianeb