Данные списка SharePoint в виде строки XML - PullRequest
2 голосов
/ 17 сентября 2011

Я пытаюсь использовать метод веб-службы GetListItems для извлечения всех элементов списка.Метод вызывает исключение InvalidOperation с сообщением «В XML-документе произошла ошибка».Кажется, что по крайней мере одно из значений столбца содержит «недопустимые» шестнадцатеричные значения ... по крайней мере, что касается узлов XML.

Помимо извлечения каждого элемента по одному (и пропуска «плохих»)item), есть ли способ получить необработанные данные XML, возвращаемые GetListItems?Я думаю, что если у меня есть необработанная строка, я могу попытаться санировать ее перед преобразованием в XML-узлы (а затем в DataTable).

Будут признательны за любые другие идеи.

Спасибо

Джейсон

Ответы [ 2 ]

0 голосов
/ 24 мая 2012

@ Джейсон Я не смог воспроизвести проблему в точности так, как вы описали, но я хотел бы попробовать эту технику:

  1. Установите флажок в VisualStudio, Option, Debugging, General, снимите флажок «Enable Just».Мой код "
  2. Показать ваш автогенерацию Reference.cs, поместите курсор туда, где вы вызываете GetListItems (т.е.null), а затем нажмите F12 (Перейти к определению)

    1. Установите точку останова (и точку наблюдения) или даже измените автоматически сгенерированный код, здесь вы можете проверить (быстрое наблюдение,или ваша любимая техника) objec [] возвращает результат, возвращаемый вызовом, то есть:

      [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/sharepoint/soap/GetListItems", RequestNamespace="http://schemas.microsoft.com/sharepoint/soap/", ResponseNamespace="http://schemas.microsoft.com/sharepoint/soap/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
      public System.Xml.XmlNode GetListItems(string listName, string viewName, System.Xml.XmlNode query, System.Xml.XmlNode viewFields, string rowLimit, System.Xml.XmlNode queryOptions, string webID) {
      object[] results = this.Invoke("GetListItems", new object[] {
                  listName,
                  viewName,
                  query,
                  viewFields,
                  rowLimit,
                  queryOptions,
                  webID});
      
      Debug.WriteLine(results.Length);
      
      return ((System.Xml.XmlNode)(results[0]));
      

      }

Я с нетерпением жду возможности узнать,это может помочь вам лучше определить или решить проблему

0 голосов
/ 06 октября 2011

Можете ли вы проверить, что возвращаемые данные на самом деле являются правильными данными XML, а не страницей ошибок HTML, такой как страница ошибок 401 или 404?

...