2011-09-17 5 views
2

Je tente d'utiliser la méthode de service Web GetListItems pour récupérer tous les éléments d'une liste. La méthode déclenche une exception InvalidOperation avec le message «Il y a une erreur dans le document XML». Il semble qu'au moins une des valeurs de la colonne contient des valeurs hexadécimales "illégales" ... au moins aussi loin que les nœuds XML.SharePoint Liste des données au format XML Chaîne

Outre tirant chaque élément un à la fois (et sauter l'élément « mauvais »), est-il un moyen d'obtenir les données XML brutes sont renvoyées par GetListItems? Ma pensée est que si j'ai la chaîne brute je peux essayer de la désinfecter avant de la convertir en nœuds XML (et plus tard dans un DataTable).

D'autres idées seraient appréciées.

Merci

Jason

Répondre

0

Pouvez-vous valider que les données renvoyées sont en fait les données XML correctes et non une page d'erreur HTML comme une page d'erreur 401 ou 404?

+0

Oui. Quand j'utilise Fiddler, je vois que les données XML sont retournées. En outre, lorsque je modifie la requête pour exclure cet élément de liste, le code fonctionne comme prévu. – Jason

0

@ Jason Je ne pouvais pas reproduire exactement le problème que vous avez décrit, mais je voudrais essayer cette technique:

  1. Vérifiez dans votre VisualStudio, Option, Debugging, Général, unchek l'option « Activer juste Mon code "
  2. Révélez votre autogenerate Reference.cs, placez le curseur où vous appelez les GetListItems (c.-à-XmlNode ndListItems = listService.GetListItems (slist, null, ndQuery, ndViewFields, "0", ndQueryOptions, null); puis F12 (Aller à la définition)

    1. Mettez un point d'arrêt (et un point d'arrêt) ou même modifier le code généré automatiquement; ici vous pourriez être en mesure d'inspecter (montre rapide, ou votre tecnique favori) les objec [] restults renvoyés par l'invocation à savoir:

      [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])); 
      

      }

Je suis impatient savoir si cela peut vous aider à mieux identifier ou résoudre le problème

+1

Merci beaucoup pour la réponse, mais je n'ai pas travaillé sur cela depuis l'année dernière. Je ne me souviens pas exactement comment je l'ai fait mais j'ai fini par traquer le seul élément de la liste qui causait des problèmes et j'ai modifié ma requête pour l'exclure. – Jason

Questions connexes