2010-08-10 9 views
2

J'utilise SharePoint Web Services pour récupérer des éléments de liste dans SharePoint pour un projet sur lequel je travaille. J'utilise l'utilisation de LINQ to XML pour analyser le XML résultant à mettre dans une feuille de données. Le problème que je suis en cours d'exécution en est lorsque vous essayez d'analyser un élément qui n'est pas nécessaire dans SharePoint ...Problème LINQ to XML avec les services Web SharePoint

var fields = from item in results.Descendants(XName.Get("row", "#RowsetSchema")) 
        select new 
        { 
         ID = item.Attribute("ows_ID").Value, 
         Title = item.Attribute("ows_Title").Value, 
         DNS = item.Attribute("ows_DNS_x0020_Name").Value 
        }; 

nom DNS n'est pas un élément nécessaire dans la liste et certains articles ne dispose pas d'une entrée ce. le XML résultant de sharepoint omet le champ du XML provoquant une "référence d'objet non définie à une instance d'un objet." exception.

est-il une solution de contournement pour cela sans que je doive mettre une clause where dans l'instruction LINQ (juste parce qu'il n'y a pas un nom DNS entré ne signifie pas que je ne veux pas apparaître dans les résultats)

Répondre

0

Voir ma réponse en ce qui concerne l'ajout d'un paramètre ViewFields à votre requête ici: Soapclient query a Sharepoint web service

Vous souhaitez ajouter un DNS_x0020_Name FieldRef à votre paramètre particulier ViewFields.

+0

l'élément est dans le champs de vue xml mais comme ce n'est pas un champ obligatoire dans sharepoint s'il n'est pas entré dans la liste sharepoint omet le fieldref dans le XML :( – TOSM

1
var fields = from item in results.Descendants(XName.Get("row", "#RowsetSchema")) 
      select new 
      { 
       ID = item.Attribute("ows_ID").Value, 
       Title = item.Attribute("ows_Title").Value, 
       DNS = item.Attribute("ows_DNS_x0020_Name") == null ? "" : item.Attribute.("ows_DNS_x0020_Name").Value 
      }; 

Cela ne fonctionnerait-il pas?

+0

malheureusement cela ne fonctionne pas, je l'ai essayé hier après quelques recherches et puisque le champ n'est pas dans le xml il jette l'erreur lors de la recherche de l'attribut. – TOSM