Lists.asmx, GetListItems et dossiers

J'ai fait quelques recherches pour quelqu'un d'aujourd'hui autour de list.asmx web service fourni dans le cadre du SharePoint 2010 (et plus tôt).  Elle a réussi à obtenir les éléments de liste dans le dossier racine (les noms des sous-dossiers), mais il n'a pas pu obtenir des éléments dans les sous-dossiers.  J'ai fait quelques recherche sur les internets, et c'est une question très commune.  Encore, Je ne pouvais pas obtenir une bonne réponse à la question simple, « Si je sais que le dossier, Comment puis-je obtenir les éléments dans le dossier?”  Pour être honnête, I Didn't try tout cela dur depuis que j'ai voulu celui-ci sur la figure sur mes propres pendant un certain temps Sourire.

Pour définir cette, J'ai créé un site nommé « Blogging scénarios » et une liste personnalisée nommée « Liste personnalisée avec Sub dossiers ».  Ensuite, j'ai créé des dossiers nommés:

  • Année 2005
  • Année 2006
  • Année 2007

J'ai ajouté quelques éléments dans le dossier « L'année 2006 ».  C'est à quoi il ressemble:

image

Mon ami n'est pas écrire du code c#, mais plutôt à l'aide de Java, Si l'enveloppe SOAP a été ce qu'elle a vraiment besoin.  Pour obtenir que, J'ai écrit un peu de jQuery et ensuite utilisé un violon pour obtenir la conversation réelle de HTTP.

Voici le jQuery pertinent (J'ai copié le code vers le bas ci-dessous si vous souhaitez copier/coller):

image

Ils première clé est d'inclure tous les deux un <queryOptions> et <QueryOptions> nœud.  La seconde clé est que les <Dossier> le noeud est une URL à laquelle le client a accès.

Il y a peut-être d'autres façons d'obtenir ce, mais cela a fonctionné ainsi pour moi lors de l'utilisation de jQuery.

Voici l'enveloppe SOAP de ce qui précède:

<soapenv:Enveloppe xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Corps>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <nom de la liste>Liste personnalisée avec les sous répertoires</nom de la liste>
      <viewFields>  
        <ViewFields>
          <FieldRef nom =' titre’ />
          <FieldRef nom ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Dossier>
http://demoserver1/blog Liste de scénarios/listes/Custom avec Sub dossiers/année 2006</Dossier>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Corps>
</soapenv:Enveloppe>

Beaucoup d'exemples et de discussion autour de ce m'a amené à croire que tout ce dont j'ai besoin est <QueryOptions> et spécifiez un nom de dossier.  Pour moi, J'ai à la fois placez-le à l'intérieur <queryOptions> ainsi que de spécifier une URL qualifiée complète pour la <Dossier> nœud.

Voici le programme d'installation de jQuery AJAX:

$(document).prêt(fonction() {
       var soapEnv =
           "<soapenv:Enveloppe xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Corps> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <nom de la liste>Liste personnalisée avec les sous répertoires</nom de la liste> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nom =' titre’ /> \
                              <FieldRef nom ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Dossier>http://demoserver1/Blogging Liste de scénarios/listes/Custom avec Sub dossiers/année 2006</Dossier> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Corps> \
           </soapenv:Enveloppe>";

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

6 réflexions sur "Lists.asmx, GetListItems et dossiers

  1. Daniel

    Salut

    J'essaie d'afficher les documents dans un dossier spécifique à l'aide d'un SPD 2010 DataSource GetListItems

    Une fois que je me connecte à mon service web et entrez le guid pour la bibliothèque de documents
    Je peux modifier les QueryOptions et entrer dans la pièce suivante de l'ACBM
    TrainingCompanyX de conformité.

    Seulement cela ne retourne pas de résultats – enlever le paramètre QueryOptions renvoie tous les documents dans la bibliothèque de documents de racine….

    Suis je regarde en passant certaines sortes de voir paramètre et inclure le guid de l'affichage.

    Réponse
    1. Paul Galvin Auteur

      Il s'agit d'un très vieux post/commentaire Désolé pour ne jamais vous répondez. Je suppose que vous longtemps depuis figuré dehors comment procéder.

      Réponse
  2. Bob Bolton

    Bien, On dirait qu'il a dépouillé le XML… Il suffit de remplacer les dièses ci-dessous avec des chevrons.

    #queryOptions #
    #QueryOptions #
    #Portée de ViewAttributes = « RecursiveAll » / #
    #/QueryOptions #
    #/queryOptions #

    Réponse
  3. Doug

    Merci à bande pour ce post, Paul. J'ai essayé de consommer GetListItems via ColdFusion cfhttp, et ne pouvait pas obtenir l'enveloppe droite. Finalement, suis tombé sur ce post, et votre exemple fonctionné sans problème. Merci encore une fois.

    Réponse
  4. Doug

    BTW – vous connaissez une ressource qui répertorie toutes les enveloppes soap appropriée? Celui pour GetList Articles publiés sur le site microsoft.com ne correspond pas à vous êtes ici…

    Réponse

Laisser une réponse

Votre adresse email ne sera pas publiée. les champs requis sont indiqués *