Lists.asmx, GetListItems och mappar

Jag gjorde lite forskning för någon dag runt webbtjänsten list.asmx som ingår i SharePoint 2010 (och tidigare).  Hon kunde få listobjekten i rotmappen (inklusive namnen på undermappar), men det gick inte att hämta objekt i undermappar.  Jag gjorde några titta på Internet och det är en förvånansvärt gemensamma fråga.  Ännu, Jag kunde inte få ett bra svar på den enkla frågan, "om jag vet att mappen, Hur skaffar jag objekten i mappen?”  Att vara ärlig, Jag försöker inte allt hårt eftersom jag har ville bild man ut på min egen ett tag Leende.

Att ställa in här, Jag har skapat en webbplats med namnet "Blogga Scenarios" och en anpassad lista med namnet "Anpassad lista med Sub mappar".  Mappar med följande namn skapas:

  • År 2005
  • År 2006
  • År 2007

Jag lade till ett par artiklar till mappen "År 2006".  Det är vad det ser ut:

image

Min vän inte skriva C#-kod utan snarare använda Java, SOAP-kuvertet var alltså det hon verkligen behövs.  Att få som, Jag skrev en bit av jQuery och sedan används Spelman för att få http-samtalet.

Här är den relevanta jQuery (Jag kopierade koden anges nedan om du vill kopiera och klistra in):

image

De första nyckeln är omfatta både en <queryOptions> och <QueryOptions> nod.  Den andra nyckeln är att den <Mappen> noden är en URL-adress som klienten har tillgång.

Det kan finnas andra sätt att få detta, men detta fungerat bra för mig när du använder jQuery.

Här är SOAP-kuvertet för ovanstående:

<soapenv:Kuvert xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Organ>
    <GetListItems xmlns =’
http://schemas.microsoft.com/SharePoint/SOAP/’>
      <Listnamn>Anpassad lista med undermappar</Listnamn>
      <viewFields>  
        <ViewFields>
          <FieldRef namn = "titel’ />
          <FieldRef namn ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Mappen>
http://demoserver1/Blogging Scenarier/listor/Custom lista med Sub mappar/år 2006</Mappen>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Organ>
</soapenv:Kuvert>

En hel del exempel och diskussion kring detta ledde mig att tro att allt jag behöver var <QueryOptions> och ange ett mappnamn.  För mig, Jag behöver både radbryta det inuti <queryOptions> samt ange en fullständig URL för den <Mappen> nod.

Här är jQuery AJAX installationsprogrammet:

$(dokument).redo(funktionen() {
       var soapEnv =
           "<soapenv:Kuvert xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Organ> \
                    <GetListItems xmlns =’http://schemas.microsoft.com/SharePoint/SOAP/’> \
                       <Listnamn>Anpassad lista med undermappar</Listnamn> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef namn = "titel’ /> \
                              <FieldRef namn ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Mappen>http://demoserver1/Blogging Scenarier/listor/Custom lista med Sub mappar/år 2006</Mappen> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Organ> \
           </soapenv:Kuvert>";

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

6 tankar på "Lists.asmx, GetListItems och mappar

  1. Daniel

    Hej

    Jag försöker visa dokument under en viss mapp med hjälp av en SPD 2010 DataSource GetListItems

    När jag ansluter till till min webbtjänst och ange guid för dokumentbiblioteket
    Jag kan ändra på QueryOptions och ange följande del av CAML
    Överensstämmelse TrainingCompanyX.

    Bara detta returnerar inte några resultat – ta bort parametern QueryOptions returnerar alla dokument i dokumentbiblioteket rot….

    Ska jag titta på passerar några slags Visa parametern och inkluderar Visa guid.

    Svar
    1. Paul Galvin inlägg Författare

      Detta är en mycket gammal inlägg/kommentar så ledsen för att aldrig svara. Jag antar att du länge sedan listat ut hur man ska gå.

      Svar
  2. Bob Bolton

    Okej, ser ut som det avskalade ut xml… bara ersätta nummertecken nedan med sparrar.

    #queryOptions #
    #QueryOptions #
    #ViewAttributes räckvidd = "RekursivtAlla" / #
    #/QueryOptions #
    #/queryOptions #

    Svar
  3. Doug

    Tack en massa för det här inlägget, Paul. Jag har försökt att konsumera GetListItems via ColdFusion cfhttp, och kunde inte få kuvertet rätt. Så småningom kom över den här post, och ditt exempel fungerade felfritt. Tack igen.

    Svar
  4. Doug

    BTW – känner du till en resurs som listar alla korrekt tvål kuvert? En för GetList artiklar publicerade på microsoft.com inte matchar du är här…

    Svar

Lämna svar

Din e-postadress kommer inte att publiceras. behövliga fält är markerade *