尽管使用 RecursiveAll 选项,但为什么我没有得到列表子文件夹

why I don't get list subfolders despite using RecursiveAll option

这就是我的功能,尽管我使用的是递归 ALL 选项,但我没有得到子文件夹。

我什至没有获得 1 级子文件夹我只获得了主要文件和文件夹,我确定我在 soap 请求中有问题但我无法弄清楚。

我使用了与此相同的请求 question

Function getResults(url, xmlDoc, spreturnattribute)

    request = "<?xml version='1.0' encoding='utf-8'?>" & _
            "<soap:Envelope xmlns:soap='http://www.w3.org/2003/05/soap-envelope' xmlns:soap1='http://schemas.microsoft.com/sharepoint/soap/'>" & _
            " <soap:Header/>" & _
             " <soap:Body>" & _
              "  <soap1:GetListItems>" & _
                "  <soap1:listName>Documents</soap1:listName>" & _
                     "<QueryOptions>" & _
                     "<IncludeMandatoryColumns>TRUE</IncludeMandatoryColumns>" & _
                      "<ViewAttributes Scope='RecursiveAll'/>" & _
                         "<DateInUtc>TRUE</DateInUtc>" & _
                    "</QueryOptions>" & _
                "</soap1:GetListItems>" & _
                  "</soap:Body>" & _
                "</soap:Envelope>"


    With CreateObject("Microsoft.XMLHTTP")
        .Open "Get", url, False, Null, Null
        .setRequestHeader "Content-Type", "text/xml; charset=utf-8"
        .setRequestHeader "SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/GetListItems"
        .send request



        xmlDoc.setProperty "SelectionLanguage", "XPath"
        xmlDoc.async = False
        xmlDoc.validateOnParse = False
        xmlDoc.resolveExternals = False
        xmlDoc.setProperty "SelectionNamespaces", "xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:namespace='http://schemas.microsoft.com/sharepoint/soap/' xmlns:rs='urn:schemas-microsoft-com:rowset' xmlns:z='#RowsetSchema'"
        xmlDoc.LoadXML (.responseText)

        Dim strQuery: strQuery = ".//z:row"

        Set colItem = xmlDoc.SelectNodes(strQuery)

        For Each objItem In colItem
        Debug.Print objItem.Attributes.getNamedItem("ows_LinkFilename").Text
        For Each queryNode In objItem.ChildNodes
          Debug.Print queryNode.Attributes.getNamedItem("ows_LinkFilename").Text
        Next
        Next

    End With

End Function

编辑1

添加参考文章

编辑2

可能是由于网站上的安全问题?还是设置 xmldoc 属性会导致这种情况? 我不太擅长 VBA 但这是一个简单的脚本,我想知道为什么它不起作用 仅供参考,我的分享点是 2013

您可能需要为查询指定 "rowLimit" 参数。

您可以设置一个特定的数字

<rowLimit>5000</rowLimit>

或获取所有带

的项目
<rowLimit>0</rowLimit>

rowLimit 区分大小写。

尝试

Recursive

对于 ViewAttributes 的范围

<ViewAttributes Scope='Recursive'/>

经过大量试验后,我删除了所有多余的未使用标签,并在 msdn 上检查了 link 并通过如下添加另一个标签查询选项来更新我的 caml,这解决了我的问题:

     <?xml version="1.0" encoding="utf-8"?>
            <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
            <soap:Body>
            <GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
            <listName>listname</listName>
            <FieldRef Name="FSObjType" /><Value Type="int">1</Value>
            <rowLimit>0</rowLimit>
            <queryOptions><QueryOptions>   <IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>
            <ViewAttributes Scope="RecursiveAll"></ViewAttributes></QueryOptions></queryOptions>
            </GetListItems>
            </soap:Body>
            </soap:Envelope>