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 .
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:
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):
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>
Siga-me no Twitter em http://www.twitter.com/pagalvin
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.
Este é um muito antigo post/comentário Desculpe por Nunca responder. Presumo que a muito tempo desde que descobri como proceder.
Bom artigo! Obrigado.
Você também pode usar a opção RecursiveAll para percorrer automaticamente a estrutura de pasta (de nível de raiz).
Razoável, Parece retirados do xml… Basta substituir os sinais de libra abaixo com divisas.
#queryOptions #
#QueryOptions #
#Escopo ViewAttributes = 'RecursiveAll' / #
#/QueryOptions #
#/queryOptions #
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.
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…