Как использовать LINQ для чтения ответа SharePoint Service? - PullRequest
1 голос
/ 01 января 2012

Я пишу приложение Silverlight, которое вызывает веб-службу SharePoint.Я получаю ответ, но я не понял правильный синтаксис LINQ для чтения значения элемента «ErrorCode».Любая помощь очень ценится.

Вот ответ SharePoint:

<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/">
  <Result ID="1,New">
    <ErrorCode>0x810200bf</ErrorCode>
    <ErrorText>The list item could not be added or updated because duplicate values were found in one or more fields in the list.</ErrorText>
  </Result>
</Results>

Я жестко кодирую приведенный ниже ответ, поэтому вам будет проще его протестировать:

TextReader sr = new StringReader(   @"<?xml version=""1.0"" encoding=""utf-8"" ?>" +
                                @"<Results xmlns=""http://schemas.microsoft.com/sharepoint/soap/"">" +
                                @"<Result ID=""1,New"">" +
                                @"<ErrorCode>0x810200bf</ErrorCode>" +
                                @"<ErrorText>The list item could not be added or updated because duplicate values were found in one or more fields in the list.</ErrorText>" +
                                @"</Result>" +
                                @"</Results>");
 XElement response = XElement.Load(sr);
 sr.Close();

 string errorCode = response.????????????????????

Я пробовал следующее:

// Attempt 1:
string errorCode = response.Elements("Results").Elements("Result").First().Value;

// Attempt 2:
string errorCode = response.Descendants(XName.Get("Result")).First().Value;

// Attempt 3:
string errorCode = response.Descendants("Results").Descendants("Result").First().Value;

// Attempt 4:
string errorCode = (from el in response.Elements("Result")
                    where el.Attribute("ID").Value == "1,New"
                    select el).First().Value;

Спасибо.

1 Ответ

1 голос
/ 01 января 2012

Вам необходимо включить пространство имен, например:

var errCode = response
    .Element("{http://schemas.microsoft.com/sharepoint/soap/}Result")
    .Element("{http://schemas.microsoft.com/sharepoint/soap/}ErrorCode")
    .Value;
...