Lists.asmx, GetListItems y carpetas

Estaba haciendo algunas investigaciones para alguien hoy alrededor del servicio web de list.asmx proporcionado como parte de SharePoint 2010 (y anteriores).  Ella fue capaz de obtener los elementos de lista en la carpeta raíz (incluidos los nombres de las subcarpetas), pero no se pudo obtener elementos en las subcarpetas.  Hice algunos mirando alrededor de la internets y es una cuestión sorprendentemente común.  Todavía, No podía obtener una buena respuesta a la pregunta simple, "si sé la carpeta, Cómo obtener los elementos de la carpeta?”  Para ser honesto, No intente duro todo lo que ya he quería figura esta uno fuera de mi propia durante un tiempo Sonreír.

Para configurar esto, He creado un sitio llamado "Blogging escenarios" y una lista personalizada denominada "Lista personalizada con las subcarpetas".  A continuación, crear carpetas con el nombre:

  • Año 2005
  • Año 2006
  • Año 2007

He añadido algunos elementos a la carpeta "Año 2006".  Esto es lo que parece:

image

Mi amigo no escribir código C# sino más bien mediante Java, por lo que la envoltura SOAP era lo que necesitaba realmente.  Para conseguir, Escribí un poco de jQuery y entonces utilizarse violinista para obtener la conversación real de HTTP.

Aquí es el jQuery pertinente (He copiado el código abajo a continuación si desea copiar y pegar):

image

Su primera clave es incluir tanto un <queryOptions> y <QueryOptions> nodo.  La segunda clave es que el <Carpeta> el nodo es una dirección URL a la que el cliente tiene acceso.

Puede haber otras formas de obtener esto, pero esto funcionó bien para mí cuando usando jQuery.

Aquí es la envoltura SOAP para la anterior:

<soapenv:Xmlns envolvente:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Cuerpo>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Lista personalizada con las subcarpetas</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef nombre =' título’ />
          <FieldRef nombre ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Carpeta>
http://demoserver1/blogs Lista personalizada de listas de escenarios con Sub carpetas/año 2006</Carpeta>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Cuerpo>
</soapenv:Envolvente>

Un montón de ejemplos y debate en torno a esto me llevó a creer que todo lo que necesito <QueryOptions> y especifique un nombre de carpeta.  Para mí, Yo necesito a ambos envolverlo dentro <queryOptions> así como especificar una dirección URL completa de la <Carpeta> nodo.

Aquí está el programa de instalación de AJAX jQuery:

$(documento).listo(función() {
       var soapEnv =
           "<soapenv:Xmlns envolvente:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Cuerpo> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Lista personalizada con las subcarpetas</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nombre =' título’ /> \
                              <FieldRef nombre ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Carpeta>http://demoserver1/Blogging Lista personalizada de listas de escenarios con Sub carpetas/año 2006</Carpeta> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Cuerpo> \
           </soapenv:Envolvente>";

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

6 pensamientos sobre "Lists.asmx, GetListItems y carpetas

  1. Daniel

    Hola

    Estoy tratando de mostrar los documentos en una carpeta específica usando un SPD 2010 DataSource GetListItems

    Una vez que conectarse a mi servicio web y entrar en el guid de la biblioteca de documentos
    Puedo modificar el QueryOptions y entrar en la siguiente pieza de CAML
    Cumplimiento TrainingCompanyX.

    Sólo esto no devuelve ningún resultado – quitar el parámetro QueryOptions devuelve todos los documentos en la biblioteca de documentos de raíz….

    Estoy mirando pasar algunos de ver parámetro e incluyen el guid de vista.

    Respuesta
    1. Paul Galvin Envío autor

      Este es un post muy viejo/comenten lo siento por no responder. Supongo que desde tiempo descubrí cómo proceder.

      Respuesta
  2. Bob Bolton

    Buen articulo! Gracias.

    También puede utilizar la opción TodoRecursivo para atravesar automáticamente hacia abajo de la estructura de carpetas (desde el nivel de raíz).

    Respuesta
  3. Bob Bolton

    Vale, Parece despojó a xml… Simplemente reemplace los signos libra por debajo con galones.

    #queryOptions #
    #QueryOptions #
    #Alcance ViewAttributes = 'TodoRecursivo' / #
    #/QueryOptions #
    #/queryOptions #

    Respuesta
  4. Doug

    Muchas gracias por este post, Paul. He estado tratando de consumir GetListItems vía cfhttp ColdFusion, y no ha conseguido la envolvente derecho. Finalmente llegó a través de este post, y tu ejemplo trabajó impecablemente. Gracias de nuevo.

    Respuesta
  5. Doug

    BTW – ¿Sabes de un recurso que enumera todos los sobres de jabón adecuado? El para GetList artículos publicadas en microsoft.com no coincide con lo aquí…

    Respuesta

Leave a Reply a Bob Bolton Cancelar respuesta

su dirección de correo electrónico no será publicada. Los campos necesarios están marcados *