代码之家  ›  专栏  ›  技术社区  ›  AlexanderJohannesen

如何通过Web服务从SharePoint(2007)中提取所有可用文档?

  •  0
  • AlexanderJohannesen  · 技术社区  · 14 年前

    我正在尝试做一些我认为相当容易的事情(因为我怀疑我不是唯一想做这件事的人);

    对于通过Web服务登录到SharePoint的给定用户,请列出所有可用的文档(我对文档存储库中的文档感兴趣,但此时任何操作都将起作用)。我越来越迷失在各种各样的迷宫中,无法找到一种简单的方法来获取所有这些文件。有没有一种方法可以搜索它们全部,或者获取存储库类型的所有列表(以及它们的子站点类型),或者这里是否有我遗漏的明显的东西?

    我没有任何技术问题,我可以很好地使用Web服务,我可以使用它们,遍历找到的项目等等,我只是没有得到正确的过程来获得这些金块。我的想法是使用lists.asmx->getlistcollection获取主列表,并遍历那些用于文档的列表,但显然不是这样。我可以按名称提取共享文档(根)列表,但是我可以为给定的用户获取所有存储库的列表吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Shaneo    14 年前

    我认为你指的是开箱即用的Web服务。为了满足您的要求,您需要利用位于/_vti_bin/webs.asmx的“webs”webservice返回网站及其子网站的详细信息。当您返回所查询网站的详细信息时,您将拥有可用的文档库列表。然后您可以调用列表服务来返回您的数据。我想我的主要观点是你必须递归地遍历所有的网站和子网站。

       private void RecurseThroughWebsForDocuments(SPWeb web){
           //do whatever with documents on the web here
    
          foreach(SPWeb subWeb in web.Webs){     
           RecurseThroughWebsForDocuments(subWeb);
          }
    }
    

    最好编写自己的自定义Web服务并将其部署到SharePoint服务器上。您可以构建一个递归方法来运行站点/子站点,然后列出文档库等。如果您处理的是大量数据,则可以将其拆分为多个线程,并在返回结果之前重新组合以加快速度。

    希望这是合理的,

    谢恩

        2
  •  0
  •   Simon Thompson    14 年前

    不太清楚你的要求是什么混合的。我想看看 http://spi.codeplex.com/ 很高兴看到SharePoint呈现URL和列表名称/GUID等的方式。