Lists. asmx, GetListItems e pastas

Eu estava fazendo uma pesquisa para alguém hoje em torno de serviço da web list.asmx fornecido como parte do SharePoint 2010 (e versões anteriores).  Ela foi capaz de obter os itens da lista na pasta raiz (incluindo os nomes das subpastas), mas não poderia obter itens de subpastas.  Eu fiz alguns olhando em volta na Internet e é uma questão surpreendentemente comum.  Ainda, Eu não poderia obter uma boa resposta para a pergunta simples, "se eu sei que a pasta, Como faço para obter os itens na pasta?”  Para ser honesto, Eu não tentei tudo o que dura desde que eu tenho quis figura esta um fora em meu próprio por um tempo Sorriso.

Para configurá-lo, Eu criei um site chamado "Blogging cenários" e uma lista personalizada denominada "Lista com Sub pastas personalizadas".  Em seguida, criei pastas com o nome:

  • Ano 2005
  • Ano 2006
  • Ano 2007

Eu adicionei alguns itens para a pasta "Ano 2006".  Isso é o que parece:

image

Meu amigo não é escrever código c# mas sim usando Java, assim que o envelope SOAP foi o que ela realmente precisava.  Para obter que, Eu escrevi um pouco de jQuery e então usado fiddler para começar a conversa de HTTP real.

Aqui está o jQuery pertinente (Eu copiei o código para baixo abaixo se você quiser copiar/colar):

image

Eles primeiro chave deve incluir ambos um <queryOptions> and <QueryOptions> nó.  A segunda chave é que o <Pasta> nó é uma URL para que o cliente tem acesso.

Pode haver outras maneiras de obter esta, mas isso funcionou bem para mim quando usando jQuery.

Aqui está o envelope SOAP para o acima:

<soapenv:Envelope xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Corpo>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Lista personalizada com Sub pastas</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef FieldRef nome =' título’ />
          <FieldRef FieldRef nome ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Pasta>
http://demoserver1/Blogs Lista de cenários/listas/Custom com Sub pastas/ano 2006</Pasta>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Corpo>
</soapenv:Envelope>

Um monte de exemplos e discussão em torno deste levou-me a crer que era tudo que eu preciso <QueryOptions> e especifique um nome de pasta.  Para mim, Eu preciso tanto para envolvê-lo dentro <queryOptions> assim como especificar um URL totalmente qualificado para o <Pasta> nó.

Aqui está o programa de configuração do AJAX jQuery:

$(documento).pronto(função() {
       var soapEnv =
           "<soapenv:Envelope xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Corpo> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Lista personalizada com Sub pastas</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef FieldRef nome =' título’ /> \
                              <FieldRef FieldRef nome ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Pasta>http://demoserver1/Blogging Lista de cenários/listas/Custom com Sub pastas/ano 2006</Pasta> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Corpo> \
           </soapenv:Envelope>";

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

6 pensamentos "Lists. asmx, GetListItems e pastas

  1. Daniel

    Oi

    Estou a tentar exibir os documentos em uma pasta específica usando um SPD 2010 DataSource GetListItems

    Uma vez que se conectar ao meu serviço da web e digite o guid para a biblioteca de documentos
    Posso modificar o QueryOptions e insira o seguinte pedaço de CAML
    TrainingCompanyX de conformidade.

    Só isso não retornar nenhum resultado – remover o parâmetro QueryOptions retorna todos os documentos na biblioteca de documento raiz….

    Estou olhando passando algum tipo de ver os parâmetro e incluir o guid de exibição.

    Resposta
    1. Paul Galvin pós autor

      Este é um muito antigo post/comentário Desculpe por Nunca responder. Presumo que a muito tempo desde que descobri como proceder.

      Resposta
  2. Bob Bolton

    Razoável, Parece retirados do xml… Basta substituir os sinais de libra abaixo com divisas.

    #queryOptions #
    #QueryOptions #
    #Escopo ViewAttributes = 'RecursiveAll' / #
    #/QueryOptions #
    #/queryOptions #

    Resposta
  3. Doug

    Muito obrigada por este post, Paulo. Tenho tentado consumir GetListItems via ColdFusion cfhttp, e não conseguia acertar o envelope. Eventualmente me deparei com este post, e seu exemplo funcionou perfeitamente. Obrigado novamente.

    Resposta
  4. Doug

    BTW – Você sabe de um recurso que lista todos os envelopes soap adequada? O por itens GetList publicado no site microsoft.com não combina com você aqui…

    Resposta

Deixe uma resposta para Bob Bolton Cancelar resposta

seu endereço de e-mail não será publicado. Campos obrigatórios são marcados *